正则表达式匹配制动器中的文本:[[文本]]

本文关键字:文本 制动器 正则表达式 | 更新日期: 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的卓越解决方案

你需要积极的向前看和向后看。

(?<='['[).*?(?=']'])