我想要下面的正则表达式匹配:
(1)hello(2)world
我想循环 2 场比赛,一场是 (1)hello,另一场是 (2)world 对于每场比赛,(1) 是第一组“hello”是第二组
我尝试了(\(\d+\))(.*?)
但失败了。
最佳答案
如果您需要使用匹配方法来分别访问(n)
和hello
值,则需要使用正则表达式喜欢
(\(\d+\))([^(]*(?:\((?!\d+\))[^(]*)*)
请参阅regex demo 。上面的模式是 (?s)(\(\d+\))((?:(?!\(\d+\)).)*)
的展开等效项。
详细信息:
(\(\d+\))
- 捕获组 1:(
, 1+ 位数字,)
([^(]*(?:\((?!\d+\))[^(]*)*)
- 捕获组 2:[^(]*
- 除(
之外的 0+ 个字符
(?:\((?!\d+\))[^(]*)*
- 零个或多个序列:\((?!\d+\))
- 文字(
后面不带 1+ 位数字和)
[^(]*
- 除(
之外的 0+ 个字符。
关于正则表达式匹配一些括号要点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42134542/