这在Perl 5.22.1中得到修复.我在Perl v5.22中写到它添加了花哨的Unicode字边界.
Perl v5.22添加了TR#29的Unicode断言.我一直在玩句子边界断言,但它似乎只能找到文本的开头和结尾:
use v5.22;
$_ = "See Spot. (Spot is a dog.) See Spot run. Run Spot, run!\x{2029}New paragraph.";
while( m/\b{sb}/g ) {
say "Sentence boundary at ", pos;
}
Run Code Online (Sandbox Code Playgroud)
输出在文本的开头和结尾处注明句子边界,但不是在完全停止之后,句子终结符或者parens:
Sentence boundary at 0
Sentence boundary at 70
Run Code Online (Sandbox Code Playgroud)
在Unicode的破坏测试仪显示他们大多是我希望他们基于TR#29.
我在这个功能的perl源代码中找不到任何非平凡的测试.我正在消化技术报告以创建适当的测试用例,但到目前为止,这看起来像另一个未经测试和破坏的功能.
我正在寻找一个匹配句子中第一个单词的正则表达式,不包括标点符号和空格.例如:"这是一个句子"中的"此".和"第一"中的"首先,我想说""你好!""
这不起作用:
"""([A-Z].*?(?=^[A-Za-z]))""".r
Run Code Online (Sandbox Code Playgroud)