$alerttext1 =~ s/\*/ANYCHARACTERS/g;
my $regex = qr/\Q$alertext1\E/i; #将所有的元字符都预先转义
# \Q 在non-word 字符前加上\,直到\E
# \E 结束\L,\E 和\Q
$regext =~ s/ANYCHARACTERS/.*/g;
if($text1 =~ $regex ...
Perl中的元字符如下:
\A 只匹配字符串开头
\b 匹配单词边界
\B 匹配单词边界之外的任意字符
\d 匹配数字字符,它与[0-9]相同
\D 匹配非数字字符
\s 匹配空白字符
\S 匹配非空白字符
[] 包围一个字符类,字符类包括:[0-9] [a-z] [a-zA-Z] 等类似。
() 包围一个字符分组或定义一个反引用
$ 匹配行尾
^ 匹配行首
* 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*
+ 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+
? 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符 \?
. 匹配除换行之外的任何字符
\ 引出下一个元字符
\w 匹配任何只包含下划线和字母数字字符的字符串,它与 [a-zA-Z0-9_]相同
\W 匹配没有下划线和字母数字字符的字符串 这些元字符的优先级如下:
1.在此优先级表的最顶端是括号:(()),在分组和引用内存值的时候使用。括号内部的任何部分比括号外的部分结合更紧密。
2.第二级是数量词。这里有星号(*), 加号(+),问号(?)以及由花括号表示的数量词,如{5,15}, {3, }, {5}等。它们通常和前一项元素结合。
3.第三级的是锚定和序列(sequence)。锚定包括(^) 表明字符串的开头,($)表明结尾,(\b)词界符,(\B)非词界符。序列(一个元素紧接着一个元素)实际上是一种操作,虽然它没有使用元字符。这段话的含义是一个单词中的字母结合更紧密,就像锚定紧贴字母一样。
4.优先级最低的是竖线(|),表示或。由于其优先级最低,它通常将模式划分成几个部分。它在优先级最底端是因为我们希望像|/fred|barney/里面的字母比或(|)结合更紧密。如果或(|)的优先级比序列的优先级更高,那么,上述模式的含义是匹配fre,接着是d 或者b, 然后是arney。因此,或(|)的优先级最低,字母序列的优先级要高些。
除了优先级表外,还有被称为原子(atoms)的东西,它们组成模式最基本的块。它们是单个字符,字符类,以及后引用(backreference)。
my $regex = qr/\Q$alertext1\E/i; #将所有的元字符都预先转义
# \Q 在non-word 字符前加上\,直到\E
# \E 结束\L,\E 和\Q
$regext =~ s/ANYCHARACTERS/.*/g;
if($text1 =~ $regex ...
Perl中的元字符如下:
\A 只匹配字符串开头
\b 匹配单词边界
\B 匹配单词边界之外的任意字符
\d 匹配数字字符,它与[0-9]相同
\D 匹配非数字字符
\s 匹配空白字符
\S 匹配非空白字符
[] 包围一个字符类,字符类包括:[0-9] [a-z] [a-zA-Z] 等类似。
() 包围一个字符分组或定义一个反引用
$ 匹配行尾
^ 匹配行首
* 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*
+ 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+
? 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符 \?
. 匹配除换行之外的任何字符
\ 引出下一个元字符
\w 匹配任何只包含下划线和字母数字字符的字符串,它与 [a-zA-Z0-9_]相同
\W 匹配没有下划线和字母数字字符的字符串 这些元字符的优先级如下:
1.在此优先级表的最顶端是括号:(()),在分组和引用内存值的时候使用。括号内部的任何部分比括号外的部分结合更紧密。
2.第二级是数量词。这里有星号(*), 加号(+),问号(?)以及由花括号表示的数量词,如{5,15}, {3, }, {5}等。它们通常和前一项元素结合。
3.第三级的是锚定和序列(sequence)。锚定包括(^) 表明字符串的开头,($)表明结尾,(\b)词界符,(\B)非词界符。序列(一个元素紧接着一个元素)实际上是一种操作,虽然它没有使用元字符。这段话的含义是一个单词中的字母结合更紧密,就像锚定紧贴字母一样。
4.优先级最低的是竖线(|),表示或。由于其优先级最低,它通常将模式划分成几个部分。它在优先级最底端是因为我们希望像|/fred|barney/里面的字母比或(|)结合更紧密。如果或(|)的优先级比序列的优先级更高,那么,上述模式的含义是匹配fre,接着是d 或者b, 然后是arney。因此,或(|)的优先级最低,字母序列的优先级要高些。
除了优先级表外,还有被称为原子(atoms)的东西,它们组成模式最基本的块。它们是单个字符,字符类,以及后引用(backreference)。