1.匹配中文
曾经看到说\W+可以,但亲测无效。
转向编码的形式:[\u4e00-\u9fa5]也不行,只能是:[\u4e00-\u9fcc]+
2.不匹配某个字符串
中间不包含 str1((?!pattern).)*str2
开头不包含^((?!pattern).)*str
结尾不包含str1.*[^?吗]$ 或者str1[^?吗]*$
3.零宽断言
1.正向肯定预查(?=pattern)
非获取匹配,在任何匹配pattern的字符串开始处匹配查找字符串,该匹配不需要获取供以后使用。例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
2、正向否定预查(?!pattern)
非获取匹配,在任何不匹配pattern的字符串开始处匹配查找字符串,该匹配不需要获取供以后使用。例如“Windows(?!95|98|NT|2000)”能匹配“Windows3.1”中的“Windows”,但不能匹配“Windows2000”中的“Windows”。
3、反向肯定预查(?<=pattern)
非获取匹配,与正向肯定预查类似,只是方向相反。例如,“(?<=95|98|NT|2000)Windows”能匹配“2000Windows”中的“Windows”,但不能匹配“3.1Windows”中的“Windows”。
4、反向否定预查(?<!pattern)
非获取匹配,与正向否定预查类似,只是方向相反。例如“(?<!95|98|NT|2000)Windows”能匹配“3.1Windows”中的“Windows”,但不能匹配“2000Windows”中的“Windows”。这个地方不正确,有问题