Javascript:Regex,用于在字符串的最后一次出现和另一个字符串之间查找字符串
我想找出出现在句子中最后一个“to”和另一个“Mary”之间的文本 所以,对于这个句子 “我星期五早上去睡觉,然后去参加那件事,然后去心爱的玛丽那里” 我的正则表达式应该匹配字符串“宠儿” 我尝试了以下代码:Javascript:Regex,用于在字符串的最后一次出现和另一个字符串之间查找字符串,javascript,regex,Javascript,Regex,我想找出出现在句子中最后一个“to”和另一个“Mary”之间的文本 所以,对于这个句子 “我星期五早上去睡觉,然后去参加那件事,然后去心爱的玛丽那里” 我的正则表达式应该匹配字符串“宠儿” 我尝试了以下代码: var str = "I went on Friday morning to bed, then to arrive for that thing and then to beloved Mary"; var r = /to\b(.*)Mary/g var match = r.exec
var str = "I went on Friday morning to bed, then to arrive for that
thing and then to beloved Mary";
var r = /to\b(.*)Mary/g
var match = r.exec(str);
console.log(match);
我使用全局标志,因为我想匹配所有出现的单词“to”。我希望它返回一个字符串数组,其中一个是字符串“心爱的”,但我得到的输出是:
[“睡觉,然后去做那件事,然后去至爱的玛丽”,“睡觉,然后去做那件事,然后去至爱的人”]
请点击这里:
有什么建议吗
编辑:单词“玛丽”不一定在字符串的末尾 您需要在实际到玛丽序列之前匹配一些内容:
var r = /.+to(.+)Mary/
您也不使用组标志
那么您的匹配组就是第一组:match[1]
请注意,如果您可能希望修剪结果,或者在正则表达式中的组外添加一些其他字符,例如\s,;\如果您只想让单词介于两者之间,则代码>不捕获这些内容
干杯。您需要在实际到玛丽序列之前匹配一些内容:
var r = /.+to(.+)Mary/
您也不使用组标志
那么您的匹配组就是第一组:match[1]
请注意,如果您可能希望修剪结果,或者在正则表达式中的组外添加一些其他字符,例如\s,;\如果您只想让单词介于两者之间,则代码>不捕获这些内容
干杯。正则表达式解析器在默认情况下是贪婪的,因此它将首先尝试从第一次出现的到
开始
您需要使用*
放弃前面的所有字符:
/.*to\b *(.*?) *\bMary/g
/.*to\b(.*)Mary/
默认情况下,正则表达式解析器是贪婪的,因此它将首先尝试从第一次出现的到
您需要使用*
放弃前面的所有字符:
/.*to\b *(.*?) *\bMary/g
/.*to\b(.*)Mary/
由于您正在查找最后一次出现的to
,因此您可以贪婪地使用*
来使用to
的任何其他实例:
/.*to\b *(.*?) *\bMary/g
/.*to\b(.*)Mary/
根据您描述的要求,/g
是不必要的,因为只有一个“最后一次出现的to
”因为您正在查找最后一次出现的to
,您可以贪婪地使用to
的任何其他实例:
/.*to\b *(.*?) *\bMary/g
/.*to\b(.*)Mary/
对于您描述的要求,/g
是不必要的,因为只有一个“最后出现的to
”尝试此模式/(to)(?!*\1)(*)Mary/g
”(to)(?!.*\1)
它与最后一个to
(.*)
是查找到和玛丽之间的文本
var str=“我星期五早上去睡觉,然后去拿东西,然后去心爱的玛丽”;
变量r=/(to)(?!.*\1)(.*)玛丽/g;
var match=r.exec(str);
console.log(匹配[2])
尝试此模式/(to)(?!.*\1)(.*)玛丽/g
”(to)(?!.*\1)
它与最后一个to
(.*)
是查找到和玛丽之间的文本
var str=“我星期五早上去睡觉,然后去拿东西,然后去心爱的玛丽”;
变量r=/(to)(?!.*\1)(.*)玛丽/g;
var match=r.exec(str);
console.log(匹配[2])代码>是否Mary
在字符串末尾?不一定-问题编辑是Mary
在字符串末尾?不一定-问题编辑