2012-12-06 116 views
1

正則表達式我想找到在Perl其中一個模式相匹配,如這個正則表達式:相匹配的特定模式

my $sumthing = "people say 
for -->"; 

在這裏say後有一個換行符。所以我需要找到一個正則表達式,它可以匹配這樣的模式,其中包含模式中的換行符。請幫我找到這個,因爲我是Perl &正則表達式的新手。

我想可能的方法是這些:

if (($sumthing !~ (/\n+$/)) && ($sumthing !~ (/^\n+/m))) 

他們好心幫我找出一個表達式匹配這種模式的,但可根據需要沒有得到輸出。

回答

0

看看/s修改器,它會導致.匹配任何內容,包括換行符。

my $str = "people say for\nsomething..."; 
$str =~ m{say(.*)}s and print "'$1'\n"; 

這將打印:

' for 
something...' 
+2

這將匹配沒有\ n的字符串 – PSIAlt

2

目前尚不清楚你想要什麼。你想要完全匹配那個字符串嗎?如果是這樣,你可以使用

$sumthing =~ /^people say\nfor -->\z/ 

$sumthing eq "people say\nfor -->" 

或者,也許你需要知道的是,.匹配任意字符包括換行符時/s使用?

/people .* -->/s 
0

下面將檢查任何東西,然後新線然後什麼。不知道我是否完全明白你的問題。

if($sumthing =~ m/.*\n.*/) 
+0

您可以忽略'。*'部分。它們是不必要的:/ \ n /。所以現在,你也可以做索引($ something,「\ n」)<0。 – Matthias