Разделение строки поиска в кавычках с помощью регулярных выражений - PullRequest
1 голос
/ 09 ноября 2009

Я пытаюсь понять, как разбить строку на условия поиска. Мне нужно это

  • разделение на пробелы и одинарные кавычки (игнорирование одного символа, результаты без кавычек)
  • возвращать цитируемые фразы без кавычек

Так что, если я применяю это к: "цитируемая фраза" отдельные слова Это вернуло бы

  • цитируемая фраза
  • одиночный
  • слова

Вот то, что у меня есть (в Javascript), но я должен раздеть кавычки отдельно.

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

Есть ли способ сделать это, используя только одно регулярное выражение?

1 Ответ

3 голосов
/ 10 ноября 2009

Кажется, это работает, но я не уверен, что охватил все случаи. Я не уверен, что это будет работать в 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]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...