java
Pattern p = Pattern.compile("(?=hopeful)hope"); String str = "hopeful"; Matcher m = p.matcher(str); while(m.find()){ System.out.println(m.group()); }
是否能匹配hopeful,如果能,则捕获hopeful中的hope。
当然继续向后查找匹配的子串,是从f开始。比较一下可以看出,(?=hopeful)hope和hope(?=ful),两个正则的效果其实是一样的
虽然看到了上面的说明还是不能理解,只见过hope(?=ful)这种写法,另一种写法该怎么理解呢?我一直以为(?=)就是用来匹配是否以xxx结尾这种形式的...
(?=exp) 匹配exp前面的位置
(?=hopeful)hope
-> (?=hopeful) + hope(?=hopeful)定位是hopeful中h的index 向后匹配的话 就找到了hope
hope(?=ful)
-> hope + (?=ful)先找到hope 之后匹配ful的index 可以试试
hope(?=ful)ful
去匹配hopeful