什么是匹配嵌套方括号标记的正则表达式?

时间:2018-03-13 08:47:38

标签: c# regex

我创建了一个正方形表达式模式,它匹配方括号,Wiki类型标签,如下所示:

[h1]Some content[/h1]
[b]some more content[/b]
[i]some more still[/i]

以下是一个场景:

This [b]sentence[/b] is just an [b][i]example[/i][/b].

以下是模式:

\[\w{1,2}\](.*?)\[\/\w{1,2}]

事情是,有时标签是嵌套的。例如:

[b][i]nested tags content[/i][/b]

嵌套并不比这更复杂。正如预期的那样,模式返回:

[b][i]nested tags content[/i]

我应该在模式中进行哪些修改,或者我应该使用什么其他模式来匹配以捕获整个嵌套集?

2 个答案:

答案 0 :(得分:2)

正则表达式与您设置的条件不相符。特别是当你有两个嵌套表达式并且每个字符串多次出现时,正则表达式很难解析。

走这条路可能会很沉重,但像ANTLR这样的解析器更适合这种情况。如果你有能力,你可以编写自己的简单字符串解析器。

答案 1 :(得分:0)

只需删除问号并获得第一组即可。的 *?量词 - 匹配尽可能少的次数,根据需要进行扩展。但你需要的是尽可能多的默认动作。 \[\w{1,2}\](.*)\[\/\w{1,2}]