我在Perl中有以下正則表達式。Perl正則表達式不匹配
if ($line =~ m/DX/o) {
printf("%s.\n", $line);
}
if ($line =~ m/.*DX\s+.*\s+.*\s+(.*)\sGB/oi) {
printf("TRUE: %s\n", $1);
($dx = $1) =~s/,//g;
}
在打印
DX 93,132 GB -- 2,145 GB 16840176 16835553.
但不進入第二個正則表達式。我檢查了正則表達式,看不到任何錯誤。任何人都可以建議嗎?
謝謝。
如果您的字段全部用*多*空格分隔,則可以考慮使用'split'而不是正則表達式。 – ThisSuitIsBlackNot
http://www.sscce.org – toolic
無論如何,你的正則表達式被打破了:因爲'.'匹配*任何字符*和'*'是*貪婪*,它會盡可能多地吞噬,包括空白分隔符。然而,這並不妨礙匹配,它只會影響你的捕獲'$ 1'的內容。當我在你的字符串上測試時,正則表達式確實符合我的要求。我假設這些是多個空格(例如'DX'和'93,132 ...'之間有19個空格? – TypeIA