正则表达式解析字符串替换问题

时间:2011-05-24 01:40:37

标签: regex perl

我想知道是否有一种简单的方法来解析像这样的字符串

set   PROMPT = Yes, Master?

我想做的是将此字符串的一部分解析为等号并将等号后的第二部分解析为另一个字符串。

3 个答案:

答案 0 :(得分:6)

像...一样的东西。

$phrase = 'set   PROMPT = Yes, Master?';
@parts = split /=/, $phrase;

($set, $value) = split /=/, $phrase, 2;

[已更新]每条评论的更改。

答案 1 :(得分:2)

尝试匹配此正则表达式/\s*set\s*(\w+)\s*=\s*(.*)\s*$/并使用$1$2设置部分:

my $str = 'set   PROMPT = Yes, Master?';
my ($k, $v) = ($1, $2) if $str =~ /\s*set\s*(\w+)\s*=\s*(.*)\s*$/;
print "OK: k=$k, v=$v\n"; OK: k=PROMPT, v=Yes, Master?

答案 2 :(得分:1)

while ($subject =~ m/([^\s]+)\s*=\s*([^\$]+)/img) {
    # $1 = $2
}