我的字符串如下
[[FOOTNOTE 23]] + [[FOOTNOTE 1787] + 182 - x +[[XYZ123]] + [[CD78G]]
我的目标是捕获所有以双括号开始和结束的关键字。请注意,[[FOOTNOTE 1787]
仅以一个方括号结束,因此不应匹配
我的RegEx模式看起来像这样:
\[\[\w{5,}.*?\]\]?
这似乎是工作,除了它也匹配[[FOOTNOTE 123]
,它不应该。
我意识到结尾的?
意味着char是可选的。
我想做的是
1.使最后一个字符必需(双括号),
1.但是以非贪婪的方式使整个模式匹配。
谢谢
4条答案
按热度按时间pftdvrlh1#
你们差点就成功了。您需要的是
[^[\]]*
(0个或多个不是方括号的字符):试试on regex101.com。
这个正则表达式匹配:
f4t66c6m2#
[[FOOTNOTE 1787]
仅以一个括号结尾,因此不应匹配."*您可以Assert方括号中的关键字不是
]
。这个会吻合
ztmd8pv53#
如果两个闭括号之间可以有一个闭方括号:
模式匹配:
\[\[
匹配[[
\w{5}
匹配5个单词字符(?:
非捕获组作为整体部分重复(?!\]\]|\[\[).
Assert从当前位置向右没有[[
或]]
,如果为真,则使用点匹配单个字符)*
关闭非捕获组,并选择重复该操作\]\]
匹配]]
Regex demo
ryevplcw4#
请尝试
regex101.com