0

我必须检查以下类型的字符串:

has [[public transport]]ation in city? some[[times]]

并仅返回相关部分 - 即

[[public transport]]ation some[[times]]

我正在使用这个正则表达式:\\w*?\\[\\[(.*?)\\]\\]\\w*?

当搜索文本也包含换行符和特殊字符时,它似乎不适用于上面给出的示例和扩展示例。你能指出我应该如何编写正则表达式吗?

4

2 回答 2

1

默认情况下.不会匹配换行符:

您需要切换单行模式

(?s)\\S*\\[\\[.*?\\]\\]\\S*
 ^

使用单行模式,.也会匹配换行符

于 2013-10-05T11:18:06.353 回答
0

您可以将此正则表达式与DOTALLswitch一起使用(?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]]>
于 2013-10-05T11:16:38.177 回答