Regex, чтобы получить смешанную ссылку со страницы wikimarkup в Java
Я должен проверить следующие строки:
has [[public transport]]ation in city? some[[times]]
и вернуть только соответствующие части - т.е.
[[public transport]]ation
some[[times]]
Я использую это регулярное выражение: \\w*?\\[\\[(.*?)\\]\\]\\w*?
Похоже, он не работает с приведенным выше примером и расширенными примерами, когда текст для поиска содержит новые строки и специальные символы. Можете ли вы указать, как я должен написать регулярное выражение?
2 ответа
Решение
По умолчанию .
не будет соответствовать символам новой строки:
Вам нужно переключить однострочный режим
(?s)\\S*\\[\\[.*?\\]\\]\\S*
^
В однострочном режиме, .
будет также соответствовать символам новой строки
Вы можете использовать это регулярное выражение с DOTALL
переключатель (?s)
:
(?s)\\S*\\[\\[.*?\\]\\]\\S*
System.out.println("has [[public transport]]ation in city? some[[times]]".replaceAll(
"(?s)\\S*\\[\\[.*?\\]\\]\\S*", "<$0>"));
ВЫХОД:
has <[[public transport]]ation> in city? <some[[times]]>