问题描述
||
我需要一个正则表达式来匹配一些用方括号括起来的标签。没什么,我只需要它来匹配标签。像这些:
[quote]
[/quote]
[b]
[url]
等等
我不需要担心关闭标签或其他任何事情。我只想获取文本中所有标签的集合。我的正则表达式知识不止是有限的。
解决方法
如果您不担心匹配结尾或嵌套或任何愚蠢的复杂情况,则可以匹配并捕获这些标签:
(\\[[^\\]]*\\])
,只要您不关心方括号内的文本的构成,以下表达式应该起作用:\\[[^\\]]+\\]
。如果要限制字母数字字符,则可以使用\\[/?[A-Za-z0-9]+\\]
。或者,如果只需要字母字符,则从字符集中删除0-9。
,@ashelvey:这个表达式很贪心,会匹配太多。 (\\[.*?\\])
是同一表达的勉强版本。
如果只想匹配内部标签,则可以使用(?<=\\[).+?(?=\\])
,使用lookbehind和lookahead。