正则表达式匹配制动器中的文本:[[文本]]
本文关键字:文本 制动器 正则表达式 | 更新日期: 2023-09-27 18:17:41
我正在尝试编写一个在 c# 中工作的正则表达式,该表达式将与以下行匹配
[[text is here]]
几乎任何事情都可以介于[[
和]]
之间。
唯一的规则是,如果出现[
或]
,连续不能超过 1 个。
例如
[[ text ] is here ]] is a match
[[ text [ is ]here [ ]] is a match
[[ text ][ is [] ]] is a match
[[ text [[ is here]] is NOT a match.
我已经挠头几个小时了,我想到的最接近的是
@"'['[[^'[]+(']'])+?"
以上将匹配
[[text is ] here]]
but not
[[text is [ here]]
任何帮助/见解将不胜感激。
'['[(?:[^'[']]|'][^']]|'[[^[])*']']
扩大:
'['[ # match the [[
(?: # and then match zero or more...
[^'[']] # character which is not [ or ], or
| '][^']] # a ], followed by a non-], or
| '[[^[] # a [, followed by a non-[
)*
']'] # and match the ]]
请注意,这将[[ text [[ is here]] is NOT a match.
与[[ is here]]
匹配。
如果我
正确理解了您的问题,则需要将其分解为两个正则表达式,一个测试[[ ]]
部分,另一个连续两个测试"坏"条件。 "匹配"是匹配第一个而不是第二个。
编辑或使用肯尼TM的卓越解决方案
你需要积极的向前看和向后看。
(?<='['[).*?(?=']'])