2017-01-22 3 views
0

Как вы захватить восклицательный знак ! перед тем " и (, но не внутри две двойные кавычки "?Захват восклицательный знак до "и (но не внутри„“(RegEx)

Перед prerequisity это нормально, но последние часть, что восклицательный знак не должен быть внутри удваивает кавычки, должны быть добавлены:

\s*([\!])\s*(")|\s*([\!])\s*(\() 

Учитывая вход: (! "A" ! (!"B" "C" " ! ("))

Ожидаемый результат: (! "A" ! (! "B" "C" " ! ("))

http://www.regexr.com/3f495

ответ

1

, если я понимаю, что вы исправить, так что вы хотите иметь точно один пространство вокруг восклицательных знаков вне кавычек.

это регулярное выражение должно сделать работу:

\G[^"]*?\K(?:\s*!\s*(?=["(]))([^"!]*(?:"[^"]*")?) 

вы можете найти объяснение регулярных выражений здесь:

Regular expression visualization

Debuggex Demo

и substituion вы можете взглянуть здесь: https://regex101.com/r/dzwTUp/1

+0

пример regex101 работает, как и ожидалось, я не уверен в том, что debuggex должен работать, но у него очень приятный интерфейс для программистов регулярных выражений! – MarkokraM

+0

@MarkokraM да, именно для хорошего интерфейса ... в настоящее время по некоторым причинам генератор изображения, кажется, сломан – bukart

Смежные вопросы