有点perl的正则表达式的含义?

Meh*_*ada 7 regex perl

我正在翻译来自perl的代码,我来到了以下行

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

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

Jon*_*oni 11

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

特别是,\p{IsPf}将字符与" 最终标点符号 "属性进行\p{IsPi}匹配,并将字符与" 初始标点符号 "属性进行匹配.这些似乎主要是关闭和开放报价.

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


Tim*_*ker 10

让我们问一下RegexBuddy:它是一个Unicode字符属性.

RegexBuddy截图

您可以在此处找到有关Unicode字符属性和Unicode脚本的更多文档.