Perl正则表达式匹配

时间:2012-06-15 20:35:17

标签: regex perl

我是perl的新手,遇到匹配字符串特定部分的问题。

我想要匹配的是粗体:

[1339300800]当前主持州:某事;

我成功地能够匹配括号之间的字符串,至少!

($line=~/\[(\d*)\]*/)

我正在为粗体部分尝试这样的事情:

($line=~/STATE:\s(\S+);/)

有人可以提供一些建议吗?

3 个答案:

答案 0 :(得分:2)

你的正则表达式

STATE:\s([^;]*);

对我有用吗?请记住,它在第1组匹配

if ($subject =~ m/STATE:\s(\S+);/) {
    $result = $1;
} else {
    $result = "";
}

此外,第一个正则表达式可以更简洁

\[(\d*)]

答案 1 :(得分:2)

如果语句总是以;结尾,您可以写:

$line =~ /:\s([^;]+)/

答案 2 :(得分:1)

你很亲密:

$line =~ /STATE:\s+([^;]+);/

这将获得不是分号的所有内容。如果在STATE和“something”

之间有多个空格,它仍将匹配