第九章 以正则表达式处理文本
1、 使用s/// 操作符可以进行“查找和替换”,其中前两个斜线之间的是模式(pattern),后两个斜线中间的是替换字符串(replacement string);替换字符串中可以使用匹配变量;使用选项修饰符 /g 可以进行全局替换;s/// 操作符有布尔型的的返回值,替换成功时为“真”,否则为“假”;
2、 Perl中,可以对模式匹配到的字符串利用“替换”的功能进行适当的大小写转换,这可能需要用到如下的转义字符:
a) /U 将其后的所有字符转换为大写;
b) /L 将其后的所有字符转换为小写;
c) /E 关闭大小写转换的功能;
d) /u 将其后字符串的首字符转换为大写;
e) /l 将其后字符串的首字符转换为小写;
说明:使用 /L/u 可以将其后所有字符转换为小写,但首字母大写;上述所有转换方式亦可用于任何双引号内的字符串;
3、 split 操作符可以根据“分隔符(可以使用正则表达式的模式匹配)”拆开一个字符串并返回由该分隔符分隔开来的一串字段(子字符串),而分隔符本身不会出现在返回值中;如果两个分隔符相邻,则其间的内容返回为空字段(子串),而split保留开头处的空字段,但会舍弃结尾处的空字段;split 默认会以空白为分隔符拆开$_;
4、 与split相反,join函数会把字符串片段(split中所说的子串或字段)使用“分隔符”连接在一起,此时的分隔符会出现在返回字符串中,但分隔符只在两个片段间出现;join的分隔符不能是不能是正则表达式;
5、 在列表上下文中使用模式匹配操作符 m// 时,如果匹配成功,则其所返回的列表内容是所有匹配变量的内容,否则返回空列表;m// 操作符可以使用 /g 选项修饰符以让模式匹配到字符串的每个可以匹配之功之处;这差不多类似于split 函数的相反功能;
6、 前述的四个量词 * 、+、?、和{}在模式匹配时默认都是贪婪模式,即尽可能多的匹配字符串中的内容,即便是 ?在匹配时也是尽可能的“要匹配”;为了取得相反的效果,即尽可能少的匹配,可以把使用到的量词指定为非贪婪模式;在量词后紧跟一个问号“?”就可以使其工作在非贪婪模式下;非贪婪模式通常跟效率没有直接关系;
7、 默认情况下,正则表达式都是用来匹配单行文本,但在模式后使用 /m 这个选项修饰符后可以实现模式的跨行匹配;
模式匹配中,圆括号具有记忆功能,如果仅想分组而不进行记忆,可以使用“(?:模式)”的格式进行;