gpt4 book ai didi

regex - 正则表达式中的 perl 正则表达式

转载 作者:行者123 更新时间:2023-12-01 11:00:34 25 4
gpt4 key购买 nike

在 perl 中有很多次我想在另一个替换运算符对匹配完成后用它自己替换匹配的字符串。例如,我有一个应用程序,我需要在其中查找带引号的字符串并从中删除空格。一种方法是:

while($str =~ s/"([^"])+"//){
$temp = $1;
$temp2 = $temp;
$temp =~ s/ /_/g;
$str =~ s/$temp2/$temp1/;
}

这似乎也是可能的:

$str =~ s/"([^"])+"/replace_spaces($1)/gx;
sub replace_spaces(){
$word = shift;
$word =~ s/ /_/g;
return $word;
}

是否有通过以某种方式在正则表达式中嵌套正则表达式的纯正则表达式方式来执行此操作?

最佳答案

对于手头的具体任务,使用 Text::ParseWords 会更好。 :

#!/usr/bin/env perl

use strict; use warnings;
use feature 'say';
use Text::ParseWords;

my $input = q{This is "a t e s t " string. "Hello - world !"};
my @words = shellwords $input;

for my $word ( @words ) {
$word =~ s/ +//g;
say "'$word'";
}

另见 How can I split a [character]-delimited string except when inside [character]?

关于regex - 正则表达式中的 perl 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11228325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com