正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。
正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。
正则表达式是繁琐的,但它是强大的,学会之后的应用会让你除了提高效率外,会给你带来绝对的成就感。
.
点号
用于匹配除换行符之外的任意一个字符,如t.r
可以匹配tar、tbr等,但不能匹配taar,taar可以对应为t..r
。*
星号
用于匹配前一个字符出现0次或者任意多次,如zo*
,可以匹配z、zo、zoo等,*
号经常和.
号一起使用,.*
代表任意长度的不包含换行符的字符。\{n,m}\}
虽然*
可用于重复匹配前一个字符,但却不能精确地控制匹配的重复次数,使用\{n,m\}
符号则能更加灵活地控制字符的重复次数。\{n\}
匹配前面的字符n次;\{n,\}
匹配前面的字符至少n次;\{n,m\}
匹配前面的字符n到m次;ro\{2\}t
,匹配为root,ro\{2,\}t
,匹配root、rooot、roooot等,ro\{2,10\}t
匹配root、rooot一直到roooooooooot。^
尖角号
匹配开头的字符。比如^root
匹配以root开头的行。$
美元符
与^
相对,用于匹配尾部,比如root$
匹配以root结尾的行。^$
则代表改行为空,因为二者之间什么都没有。[]
方括号
用于匹配方括号中出现的任一字符,比如[ABCD]
匹配A、B、C、D四个选项中的任意一个。[A-Z]
匹配任意一个大写字母,[A-Za-z]
匹配任意一个字母。\
反斜杠
代表转义字符,有一些特殊字符,都涉及到转义,才能够正确表示。比如.*
表示任意长度不包含换行符的内容,而\.*
表示任意长度的点号,\\
是对\本身的转义。\<
和\>
用于界定单词的左边界和有边界,比如\<hello
用于匹配hello开头的单词,其中包括helloworld等等,hello\>
用于匹配hello结尾的单词,使用\<hello\>
可以精确的匹配到单词hello。\d
匹配一个数字,等价于[0-9]
。\D
匹配一个非数字\b
匹配单词边界,\bhell\b
可精确匹配到hello单词。\B
匹配费单词的边界,比如hello\B
可以匹配helloworld\w
匹配字母、数字和下划线,等价于[A-Za-z0-9]
。\W
等价于[^A-Za-z0-9]
匹配非字母、非数字、非下划线\n
匹配一个换行符\r
匹配一个回车符\t
匹配一个制表符\f
匹配一个换页符\s
匹配任意空白字符\S
匹配任何非空白字符