概述
正则表达式看不懂?本文介绍简单的正则表达式语法和几个简单的要点,帮助初学者来认识它。
首先是特殊字符的说明(看不懂没关系,下面会有解释):
特别字符 | 描述 |
---|---|
$ | 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 'n' 或 'r'。要匹配 $ 字符本身,请使用 $。 |
( ) | 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 ( 和 )。 |
* | 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 *。 |
+ | 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 +。 |
. | 匹配除换行符 n 之外的任何单字符。要匹配 . ,请使用 . 。 |
[ | 标记一个中括号表达式的开始。要匹配 [,请使用 [。 |
? | 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 ?。 |
将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, 'n' 匹配字符 'n'。'n' 匹配换行符。序列 '\' 匹配 "",而 '(' 则匹配 "("。 | |
^ | 匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 ^。 |
{ | 标记限定符表达式的开始。要匹配 {,请使用 {。 |
| | 指明两项之间的一个选择。要匹配 |,请使用 |。 |
如e(abc)*这样的表达式能匹配的字符串最短是e,即*前面的表示式可以不出现,但如果是e(abc)+的话,最短匹配的字符串就是eabc了,即+前面的子表达式至少出现一次,其他的匹配还有eabcabc、eabcabcabc等。相应的e(abc)?这样的表达式,只能匹配eabc和e。
要点二:三种括号的区别
小括号表示一个表达式,如(0-9)匹配字符串"0-9";但这里如果换成中括号[0-9]则表示一个0到9的字符,比如0、1、2……,有多种匹配情况。大括号没有{0-9}这样的写法,通常用来表示匹配的长度,比如a{3,5}可以匹配aaa、aaaa、aaaaa,即表示长度为3到5的a字符串。
要点三:转义字符的使用
转义字符就是‘’,比如一个字符串为abcd{ooo},用正则表达式可以表示为abcd{o{3}},o{3}表示三个o,但转义字符后面的符号就没有了特殊字符的含义,而可以作为普通字符使用。
有些诸如空格、回车这样看不见的东西也是通过转义字符来实现:
字符 | 描述 |
---|---|
cx | 匹配由x指明的控制字符。例如, cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。 |
f | 匹配一个换页符。等价于 x0c 和 cL。 |
n | 匹配一个换行符。等价于 x0a 和 cJ。 |
r | 匹配一个回车符。等价于 x0d 和 cM。 |
s | 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ fnrtv]。 |
S | 匹配任何非空白字符。等价于 [^ fnrtv]。 |
t | 匹配一个制表符。等价于 x09 和 cI。 |
v | 匹配一个垂直制表符。等价于 x0b 和 cK。 |
字符 | 描述 |
---|---|
^ | 匹配输入字符串开始的位置。如果设置了 RegExp 对象的 Multiline 属性,^ 还会与 n 或 r 之后的位置匹配。 |
$ | 匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性,$ 还会与 n 或 r 之前的位置匹配。 |
b | 匹配一个字边界,即字与空格间的位置。 |
B | 非字边界匹配。 |
看看,有了这些定位符,我们就可以匹配诸如“work”、“apple”这样的独立单词了,因为定位符可以标记字符串的边界。
举几个例子就很清楚了。比如“^a[0-9]b$”,匹配以a开头、以b结尾、中间为一位数字的字符串,它可以匹配a0b、a4b、a5b等,但不能匹配c4b、a4d、e4t之类的内容。
要点四:B和b的区别
当我们需要找以app开头的字符串时,可以用“bapp”来匹配,这样中间或结尾出现“app”的字符串就不会被匹配到。
B的作用与b相反,但又有不同。Bapp表示app出现在单词非边界的位置,这时“Bapp”和“appB”是一样的。但“appb”和“bapp”不同,它只能匹配以app为结尾的单词。
要点五:^的不同含义
前面说到^表示字符串的开头位置,但在中括号表达式中它的意思就不一样了。比如“[^a]”匹配一个不是a的字符,它可以是除a以外的任何字符。
参考:
本文表格来自菜鸟教程。
最后
以上就是还单身钢铁侠为你收集整理的正则表达式语法入门的全部内容,希望文章能够帮你解决正则表达式语法入门所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复