perl中范围选择符 $/ 怎么用?请给出一个例子。谢谢!做正则匹配时需要用。
1个回答
展开全部
$/在perl里是行分隔符,默认是 \n。
在RE里用到的话一方面是用<>读取文件的时候每遇到$/ perl就截取当作一行,也可以设为多个字符的字符串。
行分割另一方面就是在正则匹配中的 sm 修饰符了,s是单行模式,即即便字符串里面含有\n也只把它当作一个整体来匹配,. 可以匹配 \n。m是多行匹配,把你的字符串当作以\n分割的字符多行来匹配,影响^$的意义。不加修饰符是单行而且.无法匹配\n。
你可以试下:
perl -e "print qq{a\n\n} =~ /a$/"
其中默认和加s修饰符都是无法匹配的,但是加m修饰符就能够匹配。
也就是说在正则表达式中 $/ 完全不影响匹配,$/ 只影响读取操作怎么分割你的数据。如果你改变了 $/ 的默认值,又想用正则匹配的话可以考虑先把讲到的数据用 split 分割下再处理会简单很多。
在RE里用到的话一方面是用<>读取文件的时候每遇到$/ perl就截取当作一行,也可以设为多个字符的字符串。
行分割另一方面就是在正则匹配中的 sm 修饰符了,s是单行模式,即即便字符串里面含有\n也只把它当作一个整体来匹配,. 可以匹配 \n。m是多行匹配,把你的字符串当作以\n分割的字符多行来匹配,影响^$的意义。不加修饰符是单行而且.无法匹配\n。
你可以试下:
perl -e "print qq{a\n\n} =~ /a$/"
其中默认和加s修饰符都是无法匹配的,但是加m修饰符就能够匹配。
也就是说在正则表达式中 $/ 完全不影响匹配,$/ 只影响读取操作怎么分割你的数据。如果你改变了 $/ 的默认值,又想用正则匹配的话可以考虑先把讲到的数据用 split 分割下再处理会简单很多。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询