Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将包含两个子字符串的字符串中的第一个子字符串ocurrance与regex匹配,默认情况下,regex通常与最后一个子字符串匹配_Javascript_Regex_String - Fatal编程技术网

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])