首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法让替代的RegEx工作

无法让替代的RegEx工作
EN

Stack Overflow用户
提问于 2015-08-07 17:20:30
回答 3查看 43关注 0票数 0

我有一个RegEx,它捕获了几个组:

代码语言:javascript
复制
VAN - H.Sedin (D.Sedin, A.Edler)

^(\w+)\s-\s(?P<goalscorer>.+)\s\((?P<assist1>.+),\s(?P<assist2>.+)\)$

goalscorer = H.Sedin
assist1 = D.Sedin
assist2 = A.Edler 

我希望这样做,如果在行的末尾有一个空格,它仍然捕获它,因为有时在行的末尾可能会有一个空格。

我试着做了很多事情,最近:

代码语言:javascript
复制
^(\w+)\s-\s(?P<goalscorer>.+)\s\((?P<assist1>.+),\s(?P<assist2>.+)\)$|\)\s+$

但我现在没办法抓住他们。

这里有一个实时链接来测试它:

https://regex101.com/r/mN8fC0/1

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-08-07 17:40:29

问题是你的regex

^(\w+)\s-\s(?P<goalscorer>.+)\s\((?P<assist1>.+),\s(?P<assist2>.+)\)$|\)\s+$

正在寻找两种选择之一:

^(\w+)\s-\s(?P<goalscorer>.+)\s\((?P<assist1>.+),\s(?P<assist2>.+)\)$\)\s+$

但你想到的替代方案是\)$\)\s+$

另一组限制备选方案的括号将解决这一问题:

^(\w+)\s-\s(?P<goalscorer>.+)\s\((?P<assist1>.+),\s(?P<assist2>.+)(\)$|\)\s+$)

或者,您可以直接使用\s*而不是\s+,还有一种替代方法,如:

^(\w+)\s-\s(?P<goalscorer>.+)\s\((?P<assist1>.+),\s(?P<assist2>.+)\)\s*$

票数 2
EN

Stack Overflow用户

发布于 2015-08-07 17:28:00

这是工作判据

代码语言:javascript
复制
^(?P<Name>\w+)\s-\s(?P<goalscorer>.+)\s\((?P<assist1>.+),\s(?P<assist2>.+)\)\s?$|\)

注意\s?组后面的assist1。

票数 1
EN

Stack Overflow用户

发布于 2015-08-07 17:32:25

不清楚为什么使用|\)\s+$而不是用\s*$替换$。但这个方法很有效:

代码语言:javascript
复制
^(\w+)\s-\s(?P<goalscorer>.+)\s\((?P<assist1>.+),\s(?P<assist2>.+)\)\s*$

https://regex101.com/r/mN8fC0/3

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31883349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档