当我使用:如何在正则表达式中反转正向lookbehind(?<=)?
String s = "http://google.com, /home/roroco/Dropbox/jvs/ro-idea/META-INF/plugin.xml"
ArrayList<String> ms = s.findAll(/(?<=\/)\/\S+/)
println(ms)
输出是:
[/google.com,]
当我更改为:
s.findAll(/(?<!\/)\/\S+/)
输出是:
[//google.com,, /home/roroco/Dropbox/jvs/ro-idea/META-INF/plugin.xml]
在我understandi ng,/(?<!\/)\/\S+/
输出应该与/(?<=\b)\/\S+/
输出相同,但事实上并非如此。为什么?
你有什么需要得到什么? '/(?<!\ /)\/\ S + /'!='/(?<= \ b)\/\ S + /'因为'\ b'是一个字边界, /'。 '(?<!\ /)'如果在'/'之前有'/',那么匹配失败。 –