Perl 中正则表达式的修饰符 (Modifier) 有哪些?

推荐答案

在 Perl 中,正则表达式的修饰符(Modifier)用于改变正则表达式的匹配行为。常见的修饰符包括:

  • i:忽略大小写。
  • m:多行模式,使 ^$ 匹配每行的开头和结尾。
  • s:单行模式,使 . 匹配包括换行符在内的所有字符。
  • x:允许在正则表达式中使用空白和注释。
  • o:仅编译一次正则表达式。
  • g:全局匹配,匹配所有可能的模式。
  • c:在全局匹配失败后保持上一次匹配的位置。
  • e:将替换部分作为 Perl 代码执行。

本题详细解读

i 修饰符

i 修饰符用于忽略大小写。例如,/foo/i 可以匹配 "foo"、"FOO"、"Foo" 等。

m 修饰符

m 修饰符用于多行模式。在多行模式下,^$ 分别匹配每行的开头和结尾,而不是整个字符串的开头和结尾。例如,/^foo/m 可以匹配多行字符串中每一行以 "foo" 开头的部分。

s 修饰符

s 修饰符用于单行模式。在单行模式下,. 可以匹配包括换行符在内的所有字符。例如,/foo.*bar/s 可以匹配 "foo" 和 "bar" 之间的任意字符,包括换行符。

x 修饰符

x 修饰符允许在正则表达式中使用空白和注释,使得正则表达式更易读。例如:

o 修饰符

o 修饰符用于仅编译一次正则表达式。这在正则表达式不会改变的情况下可以提高性能。例如:

g 修饰符

g 修饰符用于全局匹配。它会匹配所有可能的模式,而不是在第一次匹配成功后停止。例如:

c 修饰符

c 修饰符用于在全局匹配失败后保持上一次匹配的位置。这在需要连续匹配时非常有用。例如:

e 修饰符

e 修饰符用于将替换部分作为 Perl 代码执行。例如:

这会将匹配的数字乘以 2。

纠错
反馈