用正则表达式提取句子中的单词

时间:2011-12-31 15:18:09

标签: regex replace

我想提取一个句子的最后两个单词并替换为其他单词。让我用一个例子来描述:

word1 word2 word3 word4 .... wordn-2 wordn-1 wordn

我想要的是用正则表达式替换这句话,所以我得到这样的句子:

wordn-1 wordn : word1 word2 word3 word4 .... wordn-2

我试过

^(\w)* (\w)$

要替换为

的正则表达式代码
$2 : $1

但它不起作用。提前感谢您的建议。

2 个答案:

答案 0 :(得分:1)

^(.*)\s+(\w+\s+\w+)$

可以使用:

$2 : $1

例如,在JavaScript中:

"word1 word2 word3 word4".replace(/^(.*)\s+(\w+\s+\w+)$/, "$2 : $1");

返回:

"word3 word4 : word1 word2"

答案 1 :(得分:0)

尝试:

^(.+)\b(\w+\s+\w+)$

您的正则表达式不符合以下几个原因:

  • 你重复一个被捕获的组而不是捕获一个重复的组:(\w)*将捕获该单词的最后一个字符,你想要写(\w*);并且(\w)与空格字符不匹配;
  • 更重要的是,您使用*量词而不是+:您的第一个群组可能是空的 - *表示“零或更多”;
  • 最后,您的第二个群组(\w)只匹配一个字符。