我必须检查以下类型的字符串:
has [[public transport]]ation in city? some[[times]]
并仅返回相关部分 - 即
[[public transport]]ation
some[[times]]
我正在使用这个正则表达式:\\w*?\\[\\[(.*?)\\]\\]\\w*?
当搜索文本也包含换行符和特殊字符时,它似乎不适用于上面给出的示例和扩展示例。你能指出我应该如何编写正则表达式吗?
我必须检查以下类型的字符串:
has [[public transport]]ation in city? some[[times]]
并仅返回相关部分 - 即
[[public transport]]ation
some[[times]]
我正在使用这个正则表达式:\\w*?\\[\\[(.*?)\\]\\]\\w*?
当搜索文本也包含换行符和特殊字符时,它似乎不适用于上面给出的示例和扩展示例。你能指出我应该如何编写正则表达式吗?
默认情况下.
不会匹配换行符:
您需要切换单行模式
(?s)\\S*\\[\\[.*?\\]\\]\\S*
^
使用单行模式,.
也会匹配换行符
您可以将此正则表达式与DOTALL
switch一起使用(?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]]>