До тех пор, пока нет вложенных кавычек (в целом, регулярное выражение - это плохо для регулярных выражений):
"(?:(?<=\\)"|[^"])*"|\*[^\s]+|[^\s]+\*
Это регулярное выражение допускает экранированные двойные кавычки ('\"'
), хотя, если вам это нужно. И матч включает в себя двойные кавычки.
Это регулярное выражение соответствует:
"A string in quotes, possibly containing \"escaped quotes\""
*a_search_word_beginning_with_a_star
a_search_word_ending_with_a_star*
*a_search_word_enclosed_in_stars*
Имейте в виду , что он будет разрываться на такие строки:
A broken \"string "with the quotes all \"mangled up\""
Если вы ожидаете (читай: не может полностью исключить возможность ) получить их, пожалуйста, не используйте регулярные выражения, а напишите небольшой анализатор с поддержкой цитат. Для одноразового поиска и замены действия или ввода в формате гарантированный можно использовать регулярное выражение.
Для проверки / парсинга пользовательского ввода его нельзя использовать. Вот где я бы порекомендовал парсер. Знать разницу - вот ключ.