Вопрос о подстановке регулярного выражения - PullRequest
1 голос
/ 24 мая 2011

Я хотел бы знать, есть ли простой способ разбора строки, подобной этой

set   PROMPT = Yes, Master?

Что я хотел бы сделать, так это проанализировать одну часть этой строки до знака равенства и проанализировать вторую часть после знака равенства в другой строке.

Ответы [ 3 ]

6 голосов
/ 24 мая 2011

Что-то вроде ...

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

или

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

[обновлено] Изменения в комментариях.

2 голосов
/ 24 мая 2011

Попробуйте сопоставить это регулярное выражение /\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?
1 голос
/ 24 мая 2011
while ($subject =~ m/([^\s]+)\s*=\s*([^\$]+)/img) {
    # $1 = $2
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...