2012-12-06 84 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