Regex polish: как не включать кавычки в цитируемые подстроки в поиске - PullRequest
0 голосов
/ 11 октября 2010

Я написал регулярное выражение для разделения строки поиска на составные части. Особенности включают в себя:

  • Операторы: +, -, AND, OR
  • Группировка слов по кавычкам (пока одинарная и двойная)
  • Правильно игнорируя апострофы

Итак:

((?<=^|\s)(?:[\+\-]?"[^"]+"(?=\s|$)|[\+\-]?'[^']+'(?=\s|$)|[\+\-]?\S+|AND|and|OR|or)(?=$|\s))

Какой самый простой способ исключить кавычки-разделители из совпадений результатов? Пример:

lsdkjflws's ldkj and "lfldkfjs's ldkjfls" lskdj

Результаты на этих штуках:

  • lsdkjflws в
  • ldkj
  • и
  • "lfldkfjs's ldkjfls"
  • lskdj

Мне не нужно этого делать, я просто хотел бы сделать еще один шаг в регулярном выражении.

1 Ответ

0 голосов
/ 12 октября 2010

Какой двигатель? Если это поддерживает отрицательный и положительный взгляд, это легко:

Вместо них:

"[^"]+"

Вы бы использовали что-то вроде этого:

(?<=")[^"]+(?=")

Это исключает кавычки из совпадения, но все равно соответствует только содержимому кавычек. Я надеюсь, что это то, что вы после.

...