1.regex="z|food" 可以匹配z或者food,而不是zood或food.
2.java 支持正向后瞻和负向后瞻,正向前瞻和负向前瞻
正向前瞻
string(?=pattern)
在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows 3.1" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
负向前瞻
string(?!pattern)
在任何不匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始
正向后瞻
(?<=pattern)string
String route="old route 5";route=route.replaceAll("(?<=old )route", "xxxx");System.out.println(route);
负向后瞻
(?<!pattern)string
String route="old route 5";route=route.replaceAll("(?<!old )route", "xxxx");System.out.println(route);