我有这个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+$
但是我现在无法捕捉群组。
这是一个测试它的实时链接:
答案 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*$