從wiki標記語言頁面的混合鏈接我要檢查以下類型的字符串:正則表達式來獲得Java的
has [[public transport]]ation in city? some[[times]]
,並只返回相關的部分 - 即
[[public transport]]ation
some[[times]]
我用這正則表達式:\\w*?\\[\\[(.*?)\\]\\]\\w*?
當搜索文本中包含新行和特殊字符時,它似乎不適用於上面給出的示例和擴展示例。你能指出我應該如何寫正則表達式嗎?
從wiki標記語言頁面的混合鏈接我要檢查以下類型的字符串:正則表達式來獲得Java的
has [[public transport]]ation in city? some[[times]]
,並只返回相關的部分 - 即
[[public transport]]ation
some[[times]]
我用這正則表達式:\\w*?\\[\\[(.*?)\\]\\]\\w*?
當搜索文本中包含新行和特殊字符時,它似乎不適用於上面給出的示例和擴展示例。你能指出我應該如何寫正則表達式嗎?
默認.
不會匹配換行符:
你需要切換單在線模式
(?s)\\S*\\[\\[.*?\\]\\]\\S*
^
使用單線模式,.
也將匹配換行符
你可以使用這個表達式與DOTALL
開關(?s)
:
(?s)\\S*\\[\\[.*?\\]\\]\\S*
System.out.println("has [[public transport]]ation in city? some[[times]]".replaceAll(
"(?s)\\S*\\[\\[.*?\\]\\]\\S*", "<$0>"));
OUTPUT:
has <[[public transport]]ation> in city? <some[[times]]>
是什麼' 「<$0>」'怎麼辦?空的空間? – Angad
'$ 0'表示匹配的字符串,我使用''<$0>「'向你展示這個匹配的工作示例。 – anubhava