Извлечь 1-е вхождение строки на основе ключевого слова - PullRequest
0 голосов
/ 06 февраля 2019

Я хочу захватить все строки ASCII в скобках перед ключевым словом "конец".Однако меня интересует только захват 1-й группы соответствия.

Как игнорировать 2-ю группу соответствия?

Это пример регулярного выражения, которое я написал: \((.+?)\) end

И это примерная строка, которую я использовал: "There are some other sentences before (some otherwords which I am not interested in) all these.This is a sample string (something which I am interested in) end. This is another repeated string (with some otherwords) end."

Мне интересно только получить вывод "кое-что, что меня интересует", который находится в скобках.

1 Ответ

0 голосов
/ 06 февраля 2019

Позвольте мне сначала ответить на ваш исходный вопрос.

Я хочу захватить все строки ASCII в скобках перед ключевым словом "конец".Однако меня интересует только захват 1-й группы соответствия.

Как игнорировать 2-ю группу соответствия?

Ввод:

There are some other sentences before (some otherwords which I am not interested in) all these.This is a sample string (something which I am interested in) end. This is another repeated string (with some otherwords) end.

Ожидаемый захват:

somethings which I am interested in

Используемое регулярное выражение:

^(?<!\) end).*?\(([^()]+?)\) end

Демонстрация: https://regex101.com/r/dVo9Zi/1

Дополнительные примечания:

  • В одном из ваших комментариев вы сказали:

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

Если вам нужно проанализировать вложенные структуры, вы должны забыть о регулярных выражениях и парсере, как объяснено здесь: Могут ли регулярные выражениябыть использованы для сопоставления вложенных шаблонов?

  • Если вы действительно имеете в виду все строки ASCII в своем вопросе, то вам придется адаптировать [^()] в регулярном выражении и заменитьэто последовательные интервалы в шестнадцатеричном формате всех символов ASCII, и вам придется явно исключить ( и ).Это дает вам следующий класс символов: [\x00-\x27\x2A-\x7F]. Ссылка : http://www.asciitable.com/, демо: https://regex101.com/r/dVo9Zi/2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...