作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前有以下正则表达式:
P:(?<ParentName>[A-Z,a-z,0-9,-,_]+)-(?<ParentAge>[A-Z,a-z,0-9,-,_]+)
C:(?<Child>[A-Z,a-z,0-9,-,_]+)
匹配
P:Bob-30
C:Jane
但是,我希望能够表达一个正则表达式匹配:
P:Jack-35
C:John
C:Marie
我通过在第二部分周围添加 []+ 来尝试这样做:
P:(?<ParentName>[A-Z,a-z,0-9,-,_]+)-(?<ParentAge>[A-Z,a-z,0-9,-,_]+)
[C:(?<Child>[A-Z,a-z,0-9,-,_]+)]+
但是这不起作用并给出错误:'unmatched parenthesis )' for the last parenthesis.
有人知道我该如何表达吗?
谢谢!
更新问题似乎是 [] 里面的 []。仅适用于 1 个“C:..”行的正则表达式:
P:(?<ParentName>[A-Za-z0-9-_]+)-(?<ParentAge>[A-Za-z0-9-_]+)
C:[A-Za-z0-9-_]+\n
多个“C:..”行的正则表达式无效:
P:(?<ParentName>[A-Za-z0-9-_]+)-(?<ParentAge>[A-Za-z0-9-_]+)
[C:[A-Za-z0-9-_]+\n]+
第一个[在第二行匹配第一个],而它应该是第二个]。
最佳答案
在 Child
中获取 C:John 和 C:Marie组,您可以在子组中捕获重复组:
(?<Child>(?:C:[A-Za-z0-9,_]+(?:\s|$))+)
(?<Child>
命名组(?:
非捕获组
C:[A-Za-z0-9,_]+(?:\s|$)
匹配 C: 后跟字符类中列出的任何字符,然后匹配空白字符或字符串结尾)+
关闭捕获组并重复 1+ 次)
关闭命名组您的模式可能如下所示:
P:(?<ParentName>[A-Za-z0-9,_]+)-(?<ParentAge>[A-Za-z0-9,_]+)\s*(?<Child>(?:C:[A-Za-z0-9,_]+(?:\s|$))+)
请注意 character class可以更新到[A-Za-z0-9,_]+
您可以在其中列出每个字符一次。
关于javascript - 如何在正则表达式中表达包含命名组的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55761920/
我是一名优秀的程序员,十分优秀!