【发布时间】:2011-06-12 20:42:38
【问题描述】:
让我们从一个小例子开始;我有以下文字:
[[一些标签[[带有嵌套标签]]和再次]]
我想匹配 [[ with tag nested ]] 但不匹配 [[ some tag [[ with tag nested ]] 。简单
\[\[(?<content>.+?)\]\]
显然没有用。所以我创建了正则表达式:
\[\[(?!.*?\[\[.*?\]\].*?)(?<content>.+?)\]\]
不幸的是,它不匹配任何使用 C#(使用 MatchOptions.SingleLine)的东西,而 PHP 的 preg_match 可以完美运行。
任何线索/想法?任何帮助将不胜感激。
【问题讨论】:
-
我在 C# 中使用 SingleLine 选项运行你的正则表达式没有问题。它正确返回 [[ with tag nested ]]。你能发布你的代码吗?
-
我不确定我是否看到了问题。我使用您的第二个模式和
RegexOptions.Singleline创建了一个System.Text.RegularExpressions.Regex,然后在您的示例字符串上调用Match。它返回了一次捕获“[[ with tag nested ]]”。 -
@Harry:试试这个输入:
[[ outer1 [[ nested1 ]] outer2 [[ nested2 ]] outer3 ]]。如果我正确理解了这个问题,它应该匹配nested1和nested2,但它只匹配nested2。 -
很抱歉造成混淆,但我简化了示例,以便更容易理解预期的结果。令人惊讶的是,提供的示例成功地使用了正则表达式......但不是真正的主题。 Alan 是对的,我想匹配所有嵌套标签。感谢大家花时间提供帮助。
标签: c# regex nested regex-negation