Я работаю над шаблоном регулярных выражений для поиска, который должен позволять необязательный знак «+» включать в поиск и знак «-», чтобы исключить из поиска. Например: + apple orange -peach следует искать яблоки и апельсины, а не персики. Также шаблон должен учитывать фразы в двойных кавычках, смешанных с отдельными словами, например: «красное яблоко» - «черный виноград» + оранжевый - вы получаете идею, как и большинство интернет-поиска. Так я бегу 2 регулярных выражений, первый, чтобы выбрать все негативы, которые просто потому, что «-» требуется:Шаблон регулярного выражения для поиска с включением и исключением
(?<=[\-]"?)((?<=")(?<exclude>[^"]+)|(?<exclude>[^\s,\+\-"]+))
И второе, чтобы забрать позитивы, и это немного сложнее, потому что «+» не является обязательным:
((?<=[\+\s]")(?<include>[^\s"\+\-][^"]+))|(?<include>(?<![\-\w]"?)([\w][^,\s\-\+]+))(?<!")
Положительный поиск где я имею проблему, он отлично работает, когда я запускаю его в RegexBuddy, но когда я пытаюсь в .NET шаблон поднимает второе слово от негативных критериев, например, в - «черный виноград» поднимает слово «виноград», хотя заканчивается двойной цитатой.
Любые предложения?
Это действительно не работа для регулярных выражений. Простой поиск строк выполнил бы эту работу и упростил бы все это. –
Я должен согласиться. Вы все равно хотите, чтобы все было от строки, просто заходите на очень простой и простой в использовании парсер. Вы избавляете себя от головной боли, и это, вероятно, даже намного быстрее. –
Я с Максом на этом, регулярное выражение - это круто, но у них есть свое место. Простой синтаксический анализатор строк или сканирование будет намного проще. – zellio