regex - 一些 perl 正则表达式的含义?

标签 regex perl

我正在从 perl 翻译代码,我遇到了以下行

$text =~ s/([?!\.][\ ]*[\'\"\)\]\p{IsPf}]+) +([\'\"\(\[\¿\¡\p{IsPi}]*[\ ]*[\p{IsUpper}])/$1\n$2/g;

我的问题是,\p{IsPf} 和\p{IsPi} 匹配什么?我试过在网上搜索它,但没有找到任何东西......

最佳答案

\p{..}按 unicode 字符属性匹配字符:http://perldoc.perl.org/perlunicode.html#Unicode-Character-Properties

特别是\p{IsPf}匹配具有“final punctuation ”属性和 \p{IsPi} 的字符匹配具有“initial punctuation”属性的字符。这些似乎主要是收盘和开盘报价。

替换的要点似乎是通过匹配句子的结尾和开头将句子分成单独的行,考虑到句子可能以各种类型的标点符号开头和结尾。

关于regex - 一些 perl 正则表达式的含义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16916329/

相关文章:

regex - 使用 grep 从 ifconfig 输出的一行中提取 IP 地址

regex - htaccess - 删除带有编码重音字符的域后的多个斜杠

java - 正则表达式: match everything except *. TMP

c - Text::JaroWinkler::strcmp95 的第三个参数是什么?

perl - 杀死进程本身和所有子进程的最佳方法

javascript - 将动态 XML 内容检索到 Perl 中的变量中

Java正则表达式从给定字符串中提取单词

regex - htaccess 重定向子文件夹和文件的正则表达式,而不是父文件夹

excel - 使用 MIME::Lite 将 xlsx 附加到电子邮件

perl - 使用 Perl 从 2 个文件逐行打开和读取