Javascript 将包含两个子字符串的字符串中的第一个子字符串ocurrance与regex匹配,默认情况下,regex通常与最后一个子字符串匹配
我有一个字符串Javascript 将包含两个子字符串的字符串中的第一个子字符串ocurrance与regex匹配,默认情况下,regex通常与最后一个子字符串匹配,javascript,regex,string,Javascript,Regex,String,我有一个字符串“#这个是一个字符串(它是整洁的!)” 我想从中得到子字符串“#This”和“一个字符串” 正则表达式/#(.*)是(.*)/给出了以下信息: This is a string (which neat!) 我所期望的是: This a string (which is neat!) 为什么它要匹配正则表达式中的第二个is,如何通过匹配第一个is来获得我实际期望的输出 var string=“#这是一个字符串(很整洁!) var match=string.match(/#(.*
“#这个是一个字符串(它是整洁的!)”
我想从中得到子字符串“#This”
和“一个字符串”
正则表达式/#(.*)是(.*)/
给出了以下信息:
This is a string (which
neat!)
我所期望的是:
This
a string (which is neat!)
为什么它要匹配正则表达式中的第二个is
,如何通过匹配第一个is
来获得我实际期望的输出
var string=“#这是一个字符串(很整洁!)
var match=string.match(/#(.*)是(.*)/;
警报('第一个匹配:\t'+匹配[1]+'\n第二个匹配:\t'+匹配[2])代码>它与第二个“是”匹配,因为正则表达式的第一部分是贪婪的
这意味着,*
将以匹配整个字符串开始,然后正则表达式计算器将开始回溯,每次从匹配中删除一个字符,直到它可以找到模式其余部分的匹配
通过在量词后面添加问号,可以使量词不贪婪:
/#(.*?) is (.*)/
这将使*?
以匹配零个字符开始,然后一次添加一个字符,直到模式的其余部分匹配为止
演示:
var string=“#这是一个字符串(很整洁!)
var match=string.match(/#(.*)是(.*)/);
警报('第一个匹配:\t'+匹配[1]+'\n第二个匹配:\t'+匹配[2])代码>