正则表达式搜索和添加字符

时间:2014-09-26 05:56:07

标签: regex perl

我试图使用正则表达式将$添加到字符串中的单词的开头,以便:

Answer = partOne + partTwo

变为

$Answer = $partOne + $partTwo

我使用/ [a-z]/找到它们,但不确定我用它替换它的意思。

无论如何都要使用正则表达式,或者我想将我的字符串拆分并放入$?

我现在正在使用perl。

4 个答案:

答案 0 :(得分:2)

您可以匹配字边界\b,然后是字词\w

my $s = 'Answer = partOne + partTwo';

$s =~ s|\b (?= \w)|\$|xg;

print $s;

输出

$Answer = $partOne + $partTwo

答案 1 :(得分:0)

(\w+)

您可以\$$1使用此。替换。

参见演示。

http://regex101.com/r/lS5tT3/40

答案 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

请注意,如果您正在处理的文字是编程语言,这也将以您可能不想要的方式处理所有评论和字符串文字。