相关疑难解决方法(0)

为什么Perl v5.22没有找到所有句子边界?

这在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源代码中找不到任何非平凡的测试.我正在消化技术报告以创建适当的测试用例,但到目前为止,这看起来像另一个未经测试和破坏的功能.

regex unicode perl

13
推荐指数
1
解决办法
218
查看次数

正则表达式匹配句子中的第一个单词

我正在寻找一个匹配句子中第一个单词的正则表达式,不包括标点符号和空格.例如:"这是一个句子"中的"此".和"第一"中的"首先,我想说""你好!""

这不起作用:

"""([A-Z].*?(?=^[A-Za-z]))""".r
Run Code Online (Sandbox Code Playgroud)

regex text-segmentation

9
推荐指数
3
解决办法
3万
查看次数

标签 统计

regex ×2

perl ×1

text-segmentation ×1

unicode ×1