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

    xiaoxiao2021-12-12  2

    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);

    转载请注明原文地址: https://ju.6miu.com/read-900323.html

    最新回复(0)