我正在尝试学习正则表达式中的递归,对 PCRE 版本的概念有基本的理解。我想要分割一个字符串:
我知道两个正则表达式都无法实现这个功能,但我更好奇的是为什么 first 这种模式可以工作,而 second 不行。
此外,例如,如果您正在处理一个长字符串,并且有一个模式重复出现,那么是否可以不编写与正则表达式分开的循环语句,而是持续扩展完整匹配并逐步增加组?
这是我找到的最接近的模式closest,但中间的组别:狗(群)变成了0组。
Geese (Flock) Dogs (Pack)
into:
Full Match: Geese (Flock) Dogs (Pack)
Group 1: Geese (Flock)
Group 2: Geese
Group 3: (Flock)
Group 4: Dogs (Pack)
Group 5: Dogs
Group 6: (Pack)
我知道两个正则表达式都无法实现这个功能,但我更好奇的是为什么 first 这种模式可以工作,而 second 不行。
Pattern 1: ((.*?)(\(\w{1,}\)))((.*?)(\g<3>))*
Pattern 2: ((.*?)(\(\w{1,}\)))((\g<2>)(\g<3>))*
此外,例如,如果您正在处理一个长字符串,并且有一个模式重复出现,那么是否可以不编写与正则表达式分开的循环语句,而是持续扩展完整匹配并逐步增加组?
Full Match: Geese (Flock) Dogs (Pack) Elephants (Herd)
Group 1: Geese (Flock)
Group 2: Geese
Group 3: (Flock)
Group 4: Dogs (Pack)
Group 5: Dogs
Group 6: (Pack)
Group 7: Elephants (Herd)
Group 8: Elephants
Group 9: (Herd)
这是我找到的最接近的模式closest,但中间的组别:狗(群)变成了0组。
((.*?)(\(\w{1,}\)))((.*?)(\g<3>))*