Ris*_*Dua 10 regex string perl
目的: 我想分开单词来计算文档中的频率,然后对这些频率进行一些计算.
单词可以使用以下任何一项开始/包含/结束:
单词可以包含(但不能开头或结尾)
单词可以用任何符号或空格分隔,如$,#,&,制表符
问题:
我尝试过的:
方法: 首先我替换除了\ w(字母数字加"_"),'和 - 之后的所有内容然后我删除',_和'如果在单词的开头或结尾找到它最后我用单个替换多个空格空间和分裂的话
代码: 我正在使用一系列正则表达式替换如下:
$str =~ s/[^\w'-]/ /g;
#Also tried using $str =~ s/[^:alpha:0-9_'-]/ /g; but doesn't work
$str =~ s/- / /;
$str =~ s/' / /;
$str =~ s/_ / /;
$str =~ s/ -/ /;
$str =~ s/ '/ /;
$str =~ s/ _/ /;
$str =~ s/ +/ /;
foreach $word (split(' ', lc $str)) {
#do something
}
Run Code Online (Sandbox Code Playgroud)
约束: 我必须在Perl中执行它(因为这是我在Perl中编写的更大代码的一部分)但我可以使用除Regex之外的其他选项
Cas*_*yte 14
您可以使用\p{L}匹配所有字母的字符类.并使用\P{L}匹配所有不是字母.
要允许引号和连字符,您可以使用:
\p{L}[\p{L}'_-]*
要匹配分隔符,您可以使用:
[^\p{L}'_-]+ (分开)
或者更确切地说:
(?>[^\p{L}'_-]+|\B['_-]+|[-_']+\B) 分裂的连字符和引号也不是一句话.
| 归档时间: |
|
| 查看次数: |
8873 次 |
| 最近记录: |