java正则表达式之前瞻、后瞻以及正则注意点

来源:互联网 发布:尤克里里调音软件 安卓 编辑:程序博客网 时间:2024/05/16 17:31

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

Stringroute="old route 5";route=route.replaceAll("(?<!old )route", "xxxx");System.out.println(route);


0 0