我想从字符串的每一行中获得 3 个匹配项:
m&tch1@ match2@ match3canbe&ny7hing
match2@ match3canbe&ny7hing
- 匹配 1 可以是任何非空格,它并不总是以 @ 结尾
- 如果 Match 1 存在,则与 Match 2 用空格隔开(空格不是匹配的一部分)
- 匹配 2 始终是一个普通单词,并且始终以 @ 结尾
- 第3场比赛是什么
所以从上面,我想要:
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