输入线就像这样(只是它的一部分):
[[Text Text Text]][[text text text]]asdasdasdasda[[asdasdasdasd]]
我想要的是列出所有匹配,其中包含[[
和]]
对的文字。
我确实尝试了几种模式,但是当未关闭的[[
或]]
在输入行中时,所有模式都会失败。例如:
[[text[[text text TEXT text]]
此外,如果输入行中存在单个括号,例如:
[[text [text] text TEXT text]]
我使用的正则表达式是:
\[\[[^\[\[]*\]\]
答案 0 :(得分:3)
\[\[(?:(?!\[\[|\]\]).)*\]\]
匹配[[<anything>]]
,其中<anything>
可能不包含双括号,但包含其他所有内容。您可能需要设置正则表达式引擎的DOTALL
选项以允许点匹配换行符。
它将匹配
中的[[match [this] text]]
[[don't match this [[match [this] text]] don't match this]]
<强>解释强>
\[\[ # Match [[
(?: # Match...
(?! # (unless we're right at the start of
\[\[ # [[
| # or
\]\] # ]]
) # )
. # ...any character
)* # Repeat any number of times
\]\] # Match ]]
警告:它会匹配文字[[match [this]]
中的[[match[this]]]
,因为正则表达式无法计算。
答案 1 :(得分:2)
如何处理未闭合或单支架符合您的规格。直到那时
\[\[([^\]]|\][^\]])*\]\]
适用于我(两个有问题的字符串都匹配。