1.有人可能对正则表达式的向后引用(就是小括号的用法)不是很了解,或许也很迷茫。下面我来补充一下向后引用。
向后引用就是匹配表达式先前的部分。首先将要写的表达式写在\(与\)里,单个模式可包括至多9个表达式,且可为嵌套结构,今天我们不说很复杂的。直说简单的,让你可以接受的。然后在同一模式之后,使用\数字,数字是介于1-9的,表示匹配第几个先前括号里的内容。说这些你可能还是不是很清楚,那我就来举几个例子说明一下吧。
模式 成功
\(ab\)\(cd\)[def]*\2\1 abcdcdab,abcdeeecdab,abcdddeeffcdab,abcddefdefdefcdab
这个你能看懂吗?
匹配前面是abcd,中间表示为匹配“d、e、f”三个字母中重复任意一个字母出现0次或无穷多次,后面“\2”表示匹配先前第二个括号的内容,也就是cd。“\1”就表示匹配先前第一个括号的内容,也就是ab。
这样上个例子中匹配成功的内容我想你也明白了吧。
再例如:\(["']\).*\1 ,就表示匹配以单引号或双引号引起来的字,如:'food'或"panda"
这下你明白向后引用的用法了吗?
2.下面我再来说一下有关^和$ 的一些说明
例如我写一个文件,内容为:
abcABCdefDEF
abcabcDEFdef
aaaABCdeDEFDEF
ABCaaaaaaDef
aBcabcdefdefdefDEf
模式 是否匹配 成功
ABC 是 abcABCdefDEF
aaaABCdeDEFDEF
ABCaaaaaaDef
^ABC 是 ABCaaaaaaDef
def 是 abcABCdefDEF
abcabcDEFdef
aBcabcdefdefdefDEf
def$ 是 abcabcDEFdef
[[:upper:]]\{3\} 是 abcABCdefDEF
abcabcDEFdef
aaaABCdeDEFDEF
ABCaaaaaaDef
^[[:upper:]]\{3\} 是 ABCaaaaaaDef
[[:upper:]]\{3\}$ 是 abcABCdefDEF
aaaABCdeDEFDEF
^[[:upper:]]\{3\}$ 否 无
现在知道行首定位符,与行尾定位符的应用了吧!
好了,先补充这两点吧,如果你有疑问的话,请给我留言。
阅读(1573) | 评论(0) | 转发(0) |