Java regex replaceAll не работает - PullRequest
       15

Java regex replaceAll не работает

1 голос
/ 02 ноября 2011

регулярное выражение не работает, как хотел

Пример кода:

widgetCSS = "#widgetpuffimg{width:100%;position:relative;display:block;background:url(/images/small-banner/Dog-Activity-BXP135285s.jpg) no-repeat 50% 0; height:220px;} 

someothertext #widgetpuffimg{width:100%;position:relative;display:block;}"

newWidgetCSS = widgetCSS.replaceAll("#widgetpuffimg\\{(.*?)\\}","");

Я хочу, чтобы все вхождения в строке, которые соответствуют шаблону "#widgetpuffimg {anycharacters}", были заменены ничем

В результате newWidgetCSS = someothertext

Ответы [ 2 ]

1 голос
/ 02 ноября 2011

Это должно работать:

String resultString = subjectString.replaceAll("(?s)\\s*#widgetpuffimg\\{.*?\\}\\s*", "");

Объяснение:

"\\s" +                // Match a single character that is a “whitespace character” (spaces, tabs, line breaks, etc.)
   "*" +                 // Between zero and unlimited times, as many times as possible, giving back as needed (greedy)
"#widgetpuffimg" +    // Match the characters “#widgetpuffimg” literally
"\\{" +                // Match the character “{” literally
"." +                 // Match any single character
   "*?" +                // Between zero and unlimited times, as few times as possible, expanding as needed (lazy)
"}" +                 // Match the character “}” literally
"\\s" +                // Match a single character that is a “whitespace character” (spaces, tabs, line breaks, etc.)
   "*"                   // Between zero and unlimited times, as many times as possible, giving back as needed (greedy)

В качестве дополнительного бонуса он удаляет пробелы.

1 голос
/ 02 ноября 2011

Обновление : после редактирования вопроса

Я думаю, что регулярное выражение работает должным образом в соответствии с вашими требованиями, если вы избегаете своего {, как указано ниже.Точный вывод, который я получаю: " someothertext ".

Это должно быть newWidgetCSS = widgetCSS.replaceAll("#widgetpuffimg\\{(.*?)\\}",""); Вам нужно использовать \\{ вместо \{ для правильного экранирования {.

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