无法使用其他RegEx工作

时间:2015-08-07 17:20:30

标签: regex

我有这个RegEx捕获了几个组:

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 

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

我最近做了很多事情:

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

但是我现在无法捕捉群组。

这是一个测试它的实时链接:

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

3 个答案:

答案 0 :(得分:2)

问题是你的正则表达式

^(\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*$和其他选项,例如:

ID

答案 1 :(得分:1)

以下是working regex

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

请注意help1组之后的\s?

答案 2 :(得分:1)

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

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

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