my @matches = ($result =~ m/INFO\n(.*?)\n/);
所以在Perl中,我想存儲所有匹配的正則表達式。我期待在每次INFO \ n和\ n之間存儲值。正則表達式 - 匹配所有匹配項?
但我只收到最後一次存儲的事件。我的正則表達式錯了嗎?
my @matches = ($result =~ m/INFO\n(.*?)\n/);
所以在Perl中,我想存儲所有匹配的正則表達式。我期待在每次INFO \ n和\ n之間存儲值。正則表達式 - 匹配所有匹配項?
但我只收到最後一次存儲的事件。我的正則表達式錯了嗎?
使用/g
修飾符進行全局匹配。
my @matches = ($result =~ m/INFO\n(.*?)\n/g);
懶惰量化是在這種情況下.
不匹配換行不必要的。下面將提供更好的性能:
my @matches = ($result =~ m/INFO\n(.*)\n/g);
/s
可如果你想週期來匹配換行符使用。有關這些修飾符的更多信息,請參閱perlre。
懶惰量化'。*?'傷害正則表達式 –
爲什麼需要'/ s'?我認爲沒有理由,因爲他的比賽**不應該包含任何換行符。 –
你說得對,在這種情況下它並不重要,但是因爲他不知道'/ g'並且匹配多行字符串,他遲早需要'/ s'似乎是合理的。 – Tim
可能的重複[如何找到Perl中的正則表達式的所有匹配?](http://stackoverflow.com/questions/1723440/how-can-i-find-all-matches-toa-a- regular-expression-in-perl) – centic