Regex前瞻、查找和原子组

Regex前瞻、查找和原子组

我在我的食蚁兽身上发现了这些东西,但我不知道我能用它们做什么。有人有例子吗?我可以试着理解它们是如何工作的吗?

(?!) - negative lookahead(?=) - positive lookahead(?<=) - positive lookbehind(?<!) - negative lookbehind(?>) - atomic group


倚天杖
浏览 605回答 3
3回答

达令说

查找是零宽度断言。他们检查一个正则表达式(对当前位置的右或左-基于前面或后面),在找到匹配时(基于正还是负)成功或失败,并丢弃匹配的部分。它们不使用任何字符-后面的正则表达式的匹配(如果有的话)将从相同的光标位置开始。积极展望:语法:(?=REGEX_1)REGEX_2只有在REGEX_1匹配时才匹配;匹配REGEX_1之后,将丢弃该匹配,并从相同位置开始搜索REGEX_2。例子:(?=[a-z0-9]{4}$)[a-z]{1,2}[0-9]{2,3}REGEX_1是[a-z0-9]{4}$它匹配四个字母数字字符,后面跟着行尾。REGEX_2[a-z]{1,2}[0-9]{2,3}它匹配一个或两个字母,后面跟着两个或三个数字。REGEX_1确保字符串的长度确实是4,但不消耗任何字符,因此REGEX_2的搜索从相同的位置开始。现在,REGEX_2确保字符串与其他规则匹配。如果不向前看,它将匹配长度为3或5的字符串。负前瞻语法:(?!REGEX_1)REGEX_2只有在REGEX_1不匹配的情况下才匹配;在检查REGEX_1之后,对REGEX_2的搜索将从相同的位置开始。例子:(?!.*\bFWORD\b)\w{10,30}$前瞻部分检查FWORD在字符串中,如果它找到它,就会失败。如果它找不到FWORD,前瞻成功,下面的部分将验证字符串的长度是否介于10到30之间,并且只包含单词字符。a-zA-Z0-9_向后看类似于向前看:它只是看在当前光标位置的后面.像javascript这样的regex版本不支持前瞻性断言。而大多数支持它的风格(PHP、Python等)都需要有一个固定长度的前瞻性部分。原子组基本上在令牌匹配后丢弃/忘记组中的后续令牌。的示例,请查看此页。原子群

慕虎7371278

快速地环顾四周。如何区分前瞻和后视?带我去2分钟的旅行:(?=)&nbsp;-&nbsp;positive&nbsp;lookahead(?<=)&nbsp;-&nbsp;positive&nbsp;lookbehind假设&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;&nbsp;B&nbsp;&nbsp;C&nbsp;#in&nbsp;a&nbsp;line现在,我们问B,你在哪里?B有两种方案来宣布它的位置:第一,B前面有A,C有约束第二,B在C的前面(放眼),后面(看后面)A。正如我们所看到的,后面和前面的两个解决方案是相反的。Regex是解决方案二。
打开App,查看更多内容
随时随地看视频慕课网APP