Javascript 使用正则表达式提取句子中的最后几个单词?

Javascript 使用正则表达式提取句子中的最后几个单词?,javascript,regex,Javascript,Regex,我试图写一个正则表达式,从一个句子中提取最后几个单词。然而,我似乎无法让它工作 var str = "Tell me about robin hood"; const TELL_ME_ABOUT_REGEX = /^Tell me about (\w+\s*)*/ if( str.match(TELL_ME_ABOUT_REGEX) ){ var matches = TELL_ME_ABOUT_REGEX.exec( str ); console.log( "user wants

我试图写一个正则表达式,从一个句子中提取最后几个单词。然而,我似乎无法让它工作

var str = "Tell me about robin hood";
const TELL_ME_ABOUT_REGEX = /^Tell me about (\w+\s*)*/
if( str.match(TELL_ME_ABOUT_REGEX) ){
    var matches = TELL_ME_ABOUT_REGEX.exec( str );
    console.log( "user wants to know about ",matches);
}   
我想知道“罗宾汉”这个词。但我只会以“胡德”收场


我要在正则表达式中更改什么?

为什么需要正则表达式?你可以不用正则表达式来做

var str = "Tell me about robin hood";
var str = str.split(" ").splice(3).join(" ");
alert(str);

编辑:正则表达式解决方案

var str = "Tell me about robin hood";

var match =  str.match(/^Tell me about (.*)/i);
var textInDe = match[1]; 
alert(textInDe);
试试这个

Tell me about ([\w\s]+)


(\w+\s*)*
将捕获“罗宾汉”,然后捕获“罗宾汉”,但只保留最后一次迭代=>“罗宾汉”

/^Tell me about(\w+\s*)*/
的问题是,
“Tell me about robin”
的匹配倍数,也就是说,
罗宾汉
是一个可能的匹配,以及
罗宾汉的
等等。重复字符有时可能会让您感到困惑,但当您考虑所有匹配可能性时,它可能会更清晰。 要匹配
告诉我
之后的所有内容,您只需一次获得所有内容,只需一个匹配项:
(.*)


下面是一个正确的正则表达式:

^Tell me about ((?:\w+\s*)*)
与你原来的一个比较,它是

^Tell me about (\w+\s*)*
太接近了。关键是,您应该将非捕获组用于内部支架,将捕获组用于外部支架


请注意,
(\w+\s*)*
从正则表达式中,它可能会在第一次将
robin
捕获到
\1
,然后将
hood
覆盖到
\1
。所以,现在您可能知道正则表达式引擎将以这种方式工作。

试试这个
告诉我([\w\s]+)
哈哈!!是 啊就是这样!但我正在学习正则表达式,所以…:)学习总是好的。。。我已经为您添加了正则表达式解决方案为什么它只保留最后一次迭代?:)重复捕获组将只捕获最后一次迭代。在重复组周围放置一个捕获组以捕获所有迭代,或者如果您对数据不感兴趣,则使用非捕获组。因此,
((\w+\s*)*)
也将捕捉《罗宾汉》。
^Tell me about (\w+\s*)*