2009-11-09 105 views
1

我想弄清楚如何将字符串拆分为可搜索的术语。我需要它正则表达式拆分引用的搜索字符串

  • 分裂的空间,单引号(忽略单个字符,不带引号的结果)
  • 返回引用的短语不带引号

所以,如果我将其应用于: “援引短语” 单词 它会返回

  • 援引短语

这里是我到目前为止(在Javascript),但我必须有单独剥离出来的报价。

var searchArray = temp.match(/"[^"]*"|[^\s']{2,}/g); 
for (index in searchArray) 
    searchArray[index] = searchArray[index].replace(/"/g, ''); 

有没有什么办法只用一个正则表达式来做到这一点?

+0

考虑这个输入文本:'“双引号”“单引号”“混合‘引号’这里”“‘其他’way''还等什么如果忽略的“单个字符”是引用,你会这么做吗? – 2009-11-09 20:14:41

+0

嗯,我不会在意单引号,但我希望结果不被占有。为了讨论的缘故,我们可以忽略单引号。 – Joe 2009-11-09 20:29:57

回答

3

这似乎工作,但我不知道我已经涵盖所有情况。我不确定它会在IE 5中工作,但这可能不会让您担心;它适用于IE 6以及我尝试过的所有其他浏览器。它还去掉前导和比赛结尾的空格内报价:

var regex = /("?)\s*\b(\S[^\1]*?)\b\s*\1/g; 
var str = '"quoted phrase " single "quoted" words " yes "'; 
var res; 

while ((res = regex.exec(str))) { 
    alert(res[2]); 
} 
+0

看起来这样会做我想找的。非常感谢你!我想标记你的答案是有用的,但我还没有足够的声望。 – Joe 2009-11-10 14:11:59