正则表达式匹配两个特殊字符中间的内容

今天在使用正则表达式中,要匹配两个字符中间的内容,一时没有写出来,后来在网上找到了,记录一下。 
匹配两个字符串A与B中间的字符串包含A与B: 
表达式: A.*?B(“.“表示任意字符,“?”表示匹配0个或多个) 
示例: Abaidu.comB 
结果: Awww.apizl.comB 
匹配两个字符串A与B中间的字符串包含A但是不包含B: 
表达式: A.*?(?=B) 
示例: Awww.apizl.comB 
结果: Awww.apizl.com 
匹配两个字符串A与B中间的字符串且不包含A与B: 
表达式: (?<=A).*?(?=B) 
示例: Awww.baidu.comB 
结果: www.baidu.com

解释:

(?=pattern):非获取匹配,正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串,该匹配不需要获取供以后使用。例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。

(?<=pattern):非获取匹配,反向肯定预查,与正向肯定预查类似,只是方向相反。例如,“(?<=95|98|NT|2000)Windows”能匹配“2000Windows”中的“Windows”,但不能匹配“3.1Windows”中的“Windows”。

posted on 2018-12-01 15:52  Baymax01  阅读(7548)  评论(1编辑  收藏  举报

导航