我试图使用正则表达式将$添加到字符串中的单词的开头,以便:
Answer = partOne + partTwo
变为
$Answer = $partOne + $partTwo
我使用/ [a-z]/
找到它们,但不确定我用它替换它的意思。
无论如何都要使用正则表达式,或者我想将我的字符串拆分并放入$?
我现在正在使用perl。
答案 0 :(得分:2)
您可以匹配字边界\b
,然后是字词\w
my $s = 'Answer = partOne + partTwo';
$s =~ s|\b (?= \w)|\$|xg;
print $s;
输出
$Answer = $partOne + $partTwo
答案 1 :(得分:0)
答案 2 :(得分:0)
您可以使用前瞻只匹配紧跟着字母表的行锚点的空格或开头。替换匹配的空格字符或使用$
符号开始锚点。
use strict;
use warnings;
while(my $line = <DATA>) {
$line =~ s/(^|\s)(?=[A-Za-z])/$1\$/g;
print $line;
}
__DATA__
Answer = partOne + partTwo
<强>输出:强>
$Answer = $partOne + $partTwo
答案 3 :(得分:0)
Perl的正则表达式有一个单词字符类\w
,正是出于这种情况。它匹配大写和小写字母,十进制数字和下划线_
。
因此,如果您用一美元为一个或多个此类字符的所有出现前缀,那么它将实现您的要求。它看起来像这样
use strict;
use warnings;
my $str = 'Answer = partOne + partTwo';
$str =~ s/(\w+)/\$$1/g;
print $str, "\n";
<强>输出强>
$Answer = $partOne + $partTwo
但请注意,如果您正在处理的文字是编程语言,这也将以您可能不想要的方式处理所有评论和字符串文字。