2013-06-25 40 views
1

我有这样的正则表达式:基本正则表达式含义?

'/^ANSWER\:(.+?)$/' 

我知道这大致可以翻译为:

字符串开头为“回答:”和...

我不完全知道什么是

(.+?)$ 

翻译为?任何帮助将不胜感激!

回答

7
(  # begin capturing group 
    .+?  # match any character (.) one or more times (+) as few times as possible (?) 
)  # end capturing group 
$  # end of string anchor (or end of line anchor, if multiline option is enabled) 

下面链路具有正则表达式语法的很好的总结:
http://www.regular-expressions.info/reference.html

+0

'。+?'和'。+'之间有什么不同? – invisal

+1

@invisal带问号'尽可能少的次数,根据需要扩展(懒惰)'尽可能多次',根据需要回馈(贪婪)' – Scuzzy

+4

'。+'是贪婪的(匹配尽可能多的字符),'。+?'是懒惰的(匹配尽可能少的字符)。因此,对于字符串“red blue”,“。+ e”将匹配整个字符串,但“。+?e”只会匹配“re”。 –

2

正则表达式的括号内的部分对应于一个捕获组,或正则表达式的一部分,可以是后面会提到,以便您可以获取适合捕获组内部的子正则表达式的任何文本。 .意味着匹配单个字符,而+意味着至少有一个实例,所以.+可以被认为是“至少有一个字符”。然而,+本身是“贪婪的”,意思是它尽可能匹配尽可能多的字符,而当后面跟着?时,它被指示匹配“懒惰”,或尽可能少的字符。由于正则表达式以$结尾,因此我认为?不会更改正则表达式匹配字符串的方式,因为任何匹配都会强制匹配所有字符,直到行尾。

+2

非常正确。许多正则表达式的用户 - 甚至一些非常有经验的用户 - 似乎都将不情愿的量词视为一种可以防止各种问题的魔法病房,所以他们不分青红皂白地使用它们。他们通常也会逃避。 –