используя replace () или replaceall () - PullRequest
1 голос
/ 02 января 2012

Я знаю об этом:

public String RemoveTag(String html){
    html = html.replaceAll("\\<.*?>","");
    html = html.replaceAll("&nbsp;","");
    html = html.replaceAll("&amp;","");
    return html;
}

При этом удаляются все теги в HTML-строке. Однако вопрос в том, как он получает дикие символы между <.*?>. Может кто-нибудь дать мне более подробное объяснение того, как получать дикие символы в String.

Основная причина этого заключается в том, что у меня все еще есть эти символы с "@ в начальной точке и} в конечной точке", и я хочу избавиться от всего, что находится между "@" и "}".

Ответы [ 2 ]

2 голосов
/ 02 января 2012

Первый параметр replaceAll (...) является строкой регулярного выражения. .*? в вашем примере - это та часть, которая соответствует чему угодно. Итак, если вам нужно регулярное выражение, которое избавит вас от всего, что находится между "@" и "}", вы должны использовать что-то вроде:

String exampleText = "Start @some text} finish.";
exampleText.replaceAll("@(.*?)\\}", "@}");
System.out.println(exampleText); // prints "Start @} finish."

Обратите внимание на тот же шаблон: .*?. Скобки, которые здесь необязательны, просто используются для группировки. Также обратите внимание, что } экранирован обратной косой чертой, поскольку он может иметь особое значение в регулярных выражениях.

Для получения дополнительной информации о поддержке регулярных выражений Java см. класс Pattern .

2 голосов
/ 02 января 2012
Регулярные выражения

могут быть реализованы путем создания конечного автомата , поскольку каждое регулярное выражение имеет конечный детерминированный автомат и наоборот.

Регулярное выражение для того, что вы ищете: @.*?}если вы хотите сохранить эти символы: вы можете заменить их на "@}" вместо "".это будет что-то вроде: s.replaceAll("@.*?}", "@}") [s ваша строка].

Кажется, вам может понадобиться регулярное выражение "@. *? \}", Хотя специальный символ } должен игнорироваться распознавателем образов, если он не видит предшествующий {.Чтобы быть в безопасности: "@.*?\\}" должно работать в любом случае, как писал @WayneBaylor.

Возможно, вы захотите прочитать подробнее о регулярных выражениях

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...