2011-12-31 226 views
2

我想提取一个句子的最后两个单词并用其他单词替换。让我用一个例子说明:用正则表达式提取句子中的单词

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

我想是这样,我得到一句这样用正则表达式来代替这句话:

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

我试图

^(\w)* (\w)$ 

正则表达式的代码替换为

$2 : $1 

但是它不工作。预先感谢您的建议。

回答

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

将与合作:

$2 : $1 

例如,在JavaScript:

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

回报:

"word3 word4 : word1 word2" 
+0

它的工作,谢谢 – harun 2011-12-31 15:51:49

0

尝试:

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

你的正则表达式不匹配有以下几个原因:

  • 你重复拍摄的组,而不是捕捉重复组:(\w)*将已捕获的单词的最后一个字符,你想写(\w*),而不是;和(\w)将不匹配空格字符;
  • 更重要的是,您可以使用*量词而不是+:您的第一个组可能已经空了 - *的意思是“零个或多个”;
  • 最后,你的第二组,(\w),只有匹配一个字符。
+0

我想更换除第一话最后两个字与l两个字。你的正则表达式不符合我的意图。 – harun 2011-12-31 15:32:49

+0

糟糕...对不起,请参阅编辑 – fge 2011-12-31 15:39:36