我必须将一个字符串拆分成包含单词或特殊字符的片段.
假设我有字符串'这是'另一个问题......"'.我想得到的是一个由这些部分组成的数组:('This','is',''','another','problem','...','"').
我在JavaScript中用以下RegExp完成了这个工作正常:
string.match(/([^-\s\w])\1*|[-\w]+/g); // works
Run Code Online (Sandbox Code Playgroud)
在Perl中使用相同的方法不起作用,因为我用来组合连续字符的子模式,我也得到这些匹配:
@matches = $string =~ m/(([^-\s\w])\2*|[-\w]+)/g; # does not work
Run Code Online (Sandbox Code Playgroud)
有没有办法在结果或正则表达式本身中删除子模式/子匹配?
在你的"不工作"的例子中,我认为你的意思是\ 2,而不是\ 1.
您必须遍历匹配才能执行此操作:
push @matches, "$1" while $string =~ m/(([^-\s\w])\2*|[-\w]+)/g;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1320 次 |
| 最近记录: |