我想知道是否有一种简单的方法来解析像这样的字符串
set PROMPT = Yes, Master?
我想做的是将此字符串的一部分解析为等号并将等号后的第二部分解析为另一个字符串。
答案 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
}