我想从字符串的每一行获得3个匹配项:
m&tch1@ match2@ match3canbe&ny7hing
match2@ match3canbe&ny7hing
所以从上面我想要:
Match 1
1. m&tch1@
2. match2
3. match3canbe&ny7hing
Match 2
1.
2. match2
3. match3canbe&ny7hing
我想出了这个:/^(\S*@?) ?(\w+)@ +(.+)/
但它返回:
Match 1
1. m&tch1@
2. match2
3. match3canbe&ny7hing
Match 2
1. match
2. 2
3. match3canbe&ny7hing
匹配1很好,但是对于第2场比赛,第一组应为空,第二组应为'match2'
如果单靠正则表达式无法完成任何其他建议吗?
UPD: sawa的解决方案有效,但如果我在行前加上任何内容,例如:标签:
prefix m&tch1: match2: match3canbe&ny7hing
prefix match2: match3canbe&ny7hing
并像这样扫描:/^prefix (\S*)\s+(\S*):\s+(\S+)/
它只扫描一行
目前:http://rubular.com/r/expKw59fF2
使用前缀(尚未使用):http://rubular.com/r/VWGgU1qNWA
答案 0 :(得分:1)
string.scan(/(\S*)\s+(\S*)@\s+(\S+)/)
返回:
[
[
"m&tch1@",
"match2",
"match3canbe&ny7hing"
],
[
"",
"match2",
"match3canbe&ny7hing"
]
]