用于在两个单词和非字母数字之间插入单词的正则表达式代码

时间:2014-12-12 10:12:06

标签: regex perl

我们说我的句子包含两个单词和一些标点/数字。

例如

word1 [some punctuation / number] word2

我想在标点符号之前插入word3。 所以输出将是

word1 word3 [some punctuation / number] word2

正确的正则表达式代码是什么?最好用Perl编写。

2 个答案:

答案 0 :(得分:1)

(?<=\s)(\p{P}|\d+)(?=\s)

试试这个。参见demo。替换word3 $1

https://regex101.com/r/eZ0yP4/22

答案 1 :(得分:1)

怎么样:

use strict;
use warnings;

my $string = 'word1 , word2';
my $re = qr/(\w+) ([\p{P}\d])/;
$string =~ s/$re/$1 word3 $2/;
print $string,"\n";

<强>输出:

word1 word3 , word2

编辑:

如果标点符号是可选的,请使用:

my $re = qr/(\w+) ([\p{P}\d]?)/;
#                    here __^