Lookahead vs lookbehind

时光总嘲笑我的痴心妄想 提交于 2019-11-29 15:20:46

问题


I have a hard time to understand the concepts of "lookahead" and "lookbehind". For example, there is a string "aaaaaxbbbbb". If we look at "x", does lookahead mean looking "x" towards "bbbbb" or "aaaaa"? I mean the direction.


回答1:


If the regex is x(?=insert_regex_here) that is a (positive) look*ahead*, which looks ahead, or forwards, in other words towards "bbbb". It means "find an x that is followed by insert_regex_here".

If the regex is (?<=insert_regex_here)x that is a (positive) look*behind*, which looks behind, or backwards, in other words towards "aaaa". It means "find an x that is preceded by insert_regex_here".

You can also have negative lookahead x(?!insert_regex_here) meaning "x not followed by insert_regex_here", and negative lookbehind (?<!insert_regex_here)x, meaning "x not preceded by insert_regex_here".

(The above (?= and (?<! etc are Perl regex syntax - the syntax might be slightly different depending on your flavour of regex).

I recommend you read the link that Chad gave in the comments. It has examples.



来源:https://stackoverflow.com/questions/11621273/lookahead-vs-lookbehind

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!