我有这样的正则表达式:基本正则表达式含义?
'/^ANSWER\:(.+?)$/'
我知道这大致可以翻译为:
字符串开头为“回答:”和...
我不完全知道什么是
(.+?)$
翻译为?任何帮助将不胜感激!
我有这样的正则表达式:基本正则表达式含义?
'/^ANSWER\:(.+?)$/'
我知道这大致可以翻译为:
字符串开头为“回答:”和...
我不完全知道什么是
(.+?)$
翻译为?任何帮助将不胜感激!
( # 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
正则表达式的括号内的部分对应于一个捕获组,或正则表达式的一部分,可以是后面会提到,以便您可以获取适合捕获组内部的子正则表达式的任何文本。 .
意味着匹配单个字符,而+
意味着至少有一个实例,所以.+
可以被认为是“至少有一个字符”。然而,+
本身是“贪婪的”,意思是它尽可能匹配尽可能多的字符,而当后面跟着?
时,它被指示匹配“懒惰”,或尽可能少的字符。由于正则表达式以$
结尾,因此我认为?
不会更改正则表达式匹配字符串的方式,因为任何匹配都会强制匹配所有字符,直到行尾。
非常正确。许多正则表达式的用户 - 甚至一些非常有经验的用户 - 似乎都将不情愿的量词视为一种可以防止各种问题的魔法病房,所以他们不分青红皂白地使用它们。他们通常也会逃避。 –
'。+?'和'。+'之间有什么不同? – invisal
@invisal带问号'尽可能少的次数,根据需要扩展(懒惰)'尽可能多次',根据需要回馈(贪婪)' – Scuzzy
'。+'是贪婪的(匹配尽可能多的字符),'。+?'是懒惰的(匹配尽可能少的字符)。因此,对于字符串“red blue”,“。+ e”将匹配整个字符串,但“。+?e”只会匹配“re”。 –