Example:
Text
abcPatrickdsddd
RegEx abc(?=Patrick) Result abc
RegEx
(?=Patrick)abc
Result
null
RegEx
abc
(?<=Patrick)
Result
null
RegEx
(?<=Patrick)abc
Result
null
RegEx (?=Patrick)Pat Result Pat
RegEx
Pat(?=Patrick)
Result
null
RegEx (?<=Patrick)Pat Result
null
RegEx
Pat(?<=Patrick)
Result
null
RegEx
trick(?<=Patrick)
Result trick
RegEx
abc(?=Patrick)
Result
abc
Analysis :
abc(?=Patrick)
——首先找到
Patrick在文本中的前序位置(也就是P所在的位置3)。然后核对前面的文本是否匹配abc (第0为是a,第1位是b 第2位是 c) 。
(?=Patrick)Pat
——首先找到
Patrick在文本中的前序位置(也就是P所在的位置3)。然后核对后面面的文本是否匹配Pat (第3为是P,第4位是a 第5位是 t) 。
trick(?<=Patrick)
——首先找到
Patrick在文本中的后序位置(也就是k所在的位置9)。然后核对前面的文本是否匹配trick (第5为是t,第6位是r .....第9位是k) 。
(?<=Patrick)ds
——首先找到
Patrick在文本中的后序位置(也就是k所在的位置9)。然后核对后面的文本是否匹配ds (第10为是d,第11位是s) 。
思考:
trick(?<=Patrick)ds 返回什么呢? 返回trickds 。所以
(?<=Patrick)就是一个定位作用
说明:
Class | Description |
---|---|
(?=) | Positive lookahead |
(?!) | Negative lookahead |
(?<=) | Positive lookbehind |
(?<!) | Negative lookbehind |
(?=) 包含该位置的前序匹配
(?!) 不包含该位置的前序匹配
(?<=) 包含该位置的后续匹配
(?<!) 不包含该位置的后续匹配