我有这样的字符串:
期刊/ cl/SantoNR90 ::: Michele Di Santo :: Libero Nigro :: Wilma Russo :::Modula-2中程序员定义的控制抽象
我需要捕捉Michele Di Santo,Libero Nigro,Wilma Russo但不是最后一个.
这个正则表达式几乎匹配我需要的:
/(?<=::).*?(?=::)/
Run Code Online (Sandbox Code Playgroud)
但它有问题,它捕获了第三个冒号
str.scan(/(?<=::).*?(?=::)/) #=> [":Michele Di Santo", ...]
Run Code Online (Sandbox Code Playgroud)
如您所见,第一场比赛的开头有一个冒号.
如何解决这个正则表达式,以避免这第三个冒号?
不要使用正则表达式.您需要做的就是拆分输入字符串:::,从结果数组中取出第二个字符串,然后将其拆分::.与正则表达式版本相比,代码更快,运行更快,更易于阅读.
编辑:代码:
str.split(':::')[1].split('::')
Run Code Online (Sandbox Code Playgroud)
在CodePad上运行:http://codepad.org/1BNNwoh6
| 归档时间: |
|
| 查看次数: |
277 次 |
| 最近记录: |