我是 perl 新手,在匹配字符串的特定部分时遇到问题。
我要匹配的是粗体:
[1339300800] 当前主机状态:某事;
至少,我成功地匹配了括号之间的字符串!
($line=~/\[(\d*)\]*/)
我正在为粗体部分尝试这样的事情:
($line=~/STATE:\s(\S+);/)
有人可以给点建议吗?
你的正则表达式
STATE:\s([^;]*);
对我有用。请记住,它在第 1 组中匹配
if ($subject =~ m/STATE:\s(\S+);/) {
$result = $1;
} else {
$result = "";
}
此外,可以使第一个正则表达式不那么冗长
\[(\d*)]
如果语句总是以 a 结尾;
,你可以这样写:
$line =~ /:\s([^;]+)/
你很接近:
$line =~ /STATE:\s+([^;]+);/
这将得到所有不是分号的东西。如果 STATE 和“某物”之间有多个空格,它仍然会匹配