假设我有这个字符串:
[section][module_text id="123"]text[/module][module_number id=""]000[/module][/section]
我可以找到每个完整的[module...[/module...]
子字符串,
(\[module)(.*?)(\[\/module.*?\])
但是我只想匹配[module]
参数中包含数字的id=""
字符串。在这种情况下,第一个[module]
。
我一直在尝试很多东西,但是我似乎无法接近。
答案 0 :(得分:3)
匹配module
后,您可以匹配非]
个字符,直到到达id
部分为止,并且在id
的{{1}}之后,您可以匹配"
以确保[^"]*\d
中包含数字:
id
https://regex101.com/r/25JcEP/1
如果您要匹配的(\[module[^]]*id="[^"]*\d)(.*?)(\[\/module[^]]*\])
的{{1}}总是以 数字开头,那么您可以将其简化为
module
请注意,在最后的id
中使用否定字符类而不是(\[module[^]]*id="\d)(.*?)(\[\/module[^]]*\])
-可能的情况下,否定字符类是a bit more efficient而不是惰性重复。