【发布时间】:2011-12-14 01:38:33
【问题描述】:
我正在尝试编写一个可以在 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]]
任何帮助/见解将不胜感激。
【问题讨论】:
-
我怀疑一个正则表达式会在这里减少芥末,但是一个简单的解析器很容易编写。
-
我同意马特的观点。抛弃 RegEx 就在这里。这将非常复杂,每次您想要更改它时,您都必须重新考虑它。一个简单的 for 循环遍历字符串的每个字符将更容易理解、更改并且计算速度更快。
标签: c# .net regex expression