()表示捕获分组,()会把每个分组里的匹配的值保存起来,从左向右,以分组的左括号为标志,第一个出现的分组的组号为1,第二个为2,以此类推 (?:)表示非捕获分组,和捕获分组唯一的区别在于,非捕获分组匹配的值不会保存起来 2、(?=pattern) 正向肯定预查(look ahead positive assert),匹配pattern前面的位置。这是...
*?是*的惰性版本,两者都表示前一个符号的数量是0个或任意多个,区别是前者是贪婪匹配模式、后者是惰性...
grep "^r." /etc/passwd 8、过滤 /etc/passwd 中r后跟了任意字符,任意字符后跟了 h 的行 (也就是这一行必须得有r和h,而且h必须在r的后面) grep "r.*h" /etc/passwd 9、过滤/etc/passwd 中,包含 root 单词的行,并且root不和其他字符相邻(空格不算) grep "\<root\>" /etc/passwd 10、过滤 /e...
注意后缀里的\/,它用到了前面提过的字符转义;\1则是一个反向引用,引用的正是捕获的第一组,前面的(\w+)匹配的内容,这样如果前缀实际上是的话,后缀就是了。整个表达式匹配的是和之间的内容(再次提醒,不包括前缀和后缀本身)。 二.实际运用 现在网络上现在很流行的爬虫程序,其实就是根据正则表达式来对网页进行解...
“与”是最简单的关系,它表示若干个元素必须同时相继出现,比如匹配单词cat,其实就是要求字符c、字符a和字符t必须同时连续出现。 正则表达式表达“与”关系非常简单,直接连续写出相继出现的元素就可以,我们可以想象,再各个元素之间,存在看不见的连接操作符·,比如上面匹配单词cat的正则表达式,就是『cat』,我们可以将它...
本的意思:小括号就是括号内看成一个整体 ,中括号就是匹配括号内的其中一个,大括号就是匹配几次 但是括号里变加上其他字符就有不同意思 详细介绍 例如: {n} n是一个非负整数。匹配确定的n次。例如,“o{2}”不能匹配“Bob”中的“o”
(.)和(.?)的主要区别在于其匹配模式不同,前者是贪婪匹配模式,后者是非贪婪匹配模式。所谓贪婪匹配模式是指,正则表达式会尽可能多地匹配字符,直到无法继续匹配为止。而非贪婪匹配模式则是尽可能少地匹配字符,直到满足条件为止。 例如,对于字符串“123abc456def789”,正则表达式“[0-9].[0-9]”会匹配整个字符串...
正则默认和人心一样是贪婪的,也就是常说的贪婪模式,凡是表示范围的量词,都优先匹配上限而不是下限 a{1, 3} // 匹配字符串'aaa'的话,会匹配aaa而不是a 有时候这不是我们想要的结果,可以在量词后面加上?,就可以开启非贪婪模式 a{1, 3}? // 匹配字符串'aaa'的话,会匹配a而不是aaa ...
() 和 [] 有本质的区别 ()内的内容表示的是一个子表达式,() 本身不匹配任何东西,也不限制匹配任何东西,只是把括号内的内容作为同一个表达式来处理,例如 (ab){1,3},就表示 ab 一起连续出现最少 1 次,最多 3 次。如果没有括号的话,ab{1,3} 就表示 a,后面紧跟的 b 出现最少 1 次,最多 3 次...
可以用存在一个以上的11和33来做处理,考虑到字符串是随机的,所以11和33的位置会出现在字符串任意地方。所以我的理解是/[^=]*(11)+[^=]*(33)+.*/