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 |
(?=) 包含该位置的前序匹配
(?!) 不包含该位置的前序匹配
(?<=) 包含该位置的后续匹配
(?<!) 不包含该位置的后续匹配