Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 用于在两个单词和非字母数字之间插入单词的正则表达式代码_Regex_Perl - Fatal编程技术网

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

Regex 用于在两个单词和非字母数字之间插入单词的正则表达式代码,regex,perl,Regex,Perl,假设我有一个由两个单词和一些标点/数字组成的句子 比如说 单词1[一些标点符号/数字]单词2 我想在标点符号前插入单词3。 因此,输出将是 单词1单词3[一些标点符号/数字]单词2 什么是正确的正则表达式代码来实现这一点?最好用Perl编写。(?如何: (?<=\s)(\p{P}|\d+)(?=\s) use strict; use warnings; my $string = 'word1 , word2'; my $re = qr/(\w+) ([\p{P}\d])/; $stri

假设我有一个由两个单词和一些标点/数字组成的句子

比如说

单词1[一些标点符号/数字]单词2

我想在标点符号前插入单词3。 因此,输出将是

单词1单词3[一些标点符号/数字]单词2

什么是正确的正则表达式代码来实现这一点?最好用Perl编写。

(?如何:

(?<=\s)(\p{P}|\d+)(?=\s)
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 __^

你知道我如何直接将其应用于Perl吗?我不太擅长正则表达式,尤其是反向引用regex@IllSc`$re='/(?我试着使用这个
$a=word1 word2
$b=word1 word3 word2
$line=~s/$a/$b/I
但是如果脚本的word1和word2之间有数字/标点符号,它会失败!但是如果word1和word2之间只有空格,它会工作吗?@IllSc:你可以选择标点符号。)请看我的编辑。