字符
字符是正则表达式中的基本元素,基于字符构建正则表达式。
下面是perl的正则表达式代码,含义是把content
中的abc
替换成大写的ABC
。这里的a
就是字符,表示在目标字符串中匹配a
。
$content =~ s/abc/ABC/g;
字符组
字符组是用中括号[]
包裹的一串字符,表示匹配字符组中任意一个字符。下面正则表达式的含义是将abc
中的任意一个字符替换成D
。
$content =~ s/[abc]/D/g;
字符组的否定形式是在字符组的开头使用^
符号,表示匹配非字符组中的字符。下面正则表达式的含义是将非abc
的字符替换成D
。
$content =~ s/[^abc]/D/g;
字符组使用-
表示范围(只能在字符组中生效),比如[0-9]
表示匹配从0
到9
的某个数字,[a-z]
表示匹配从a
到z
的某个字母。当-
放在字符组开头,匹配-
字符本身。下面正则表达式的含义是将字母或者数字替换为空(删掉)。
$content =~ s/[0-9a-zA-Z]//g;
如这样的字符组[0-9a-zA-Z]
较为常用,所以正则表达式提供了一些通用的字符表示法:
字符表示法 | 含义 |
---|---|
t | 制表符 |
n | 换行符 |
r | 回车符 |
s | 空白字符(空格,制表) |
S | 非空白字符 |
w | a-zA-Z0-9 |
W | w取反 |
d | 0-9 |
D | d取反 |
. (点号) | 任意字符(换行符除外) |
这些字符表示法可以用在字符组中(除了点号,点号在字符组中匹配点号),也可用在字符组外。下面表达式含义是去掉行首尾的空白字符。
代码语言:perl复制$line =~ s/^s //;
$line =~ s/s $//;