Регулярное выражение для исключения строки, содержащей строку, из остальных регулярных выражений - PullRequest
0 голосов
/ 02 марта 2019

У меня есть куча строк, таких как:

object field: TMemo
  Left = 6
  Top = 23
  Width = 390
  Height = 156
  Anchors = [akLeft, akTop, akRight, akBottom]
  ScrollBars = ssVertical
  TabOrder = 1
  OnChange = fieldChange
  OnKeyUp = fieldKeyUp
  AddMenu = True
  RightClickMoveCaret = True
  RightEdge = 0
end

Или

object btn: TButton
  Left = 5
  Top = 3
  Width = 89
  Height = 21
  Caption = 'Button'
  TabOrder = 0
  TabStop = False
  OnClick = btnClick
end

Я хочу выделить весь текст, кроме имени объекта (в данном случае поле и btn) и каждую строкукоторый начинается с [пробел] [пробел] Вкл.

Я могу выбрать все без имени поля, используя регулярное выражение, например:

(object)|(: .*)|(end)|(  .*)

Но я не могу отменить выбор строк, начинающихся с "На".Можете ли вы помочь мне присоединиться к моему регулярному выражению с этим регулярным выражением, исключая эти строки, которые я хочу выбрать из:?

(^(?:(?!  On).)*$)

Ответы [ 2 ]

0 голосов
/ 02 марта 2019

Вы можете использовать отрицательный прогноз (?! On)( .*) для последнего чередования, чтобы проверить, что справа не 2 пробела, за которыми следует On:

(object)|(: .*)|(end)|(?!  On)(  .*)

Regex demo

Поскольку ваши совпадения находятся в начале и в конце перемешивания, более точное совпадение может быть с использованием якорей ^ и $:

^(object)|(: .*)$|^(end)$|^(?!  On)(  .*)

Regex demo

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

^object|: .*$|^end$|^(?!  On)  .*
0 голосов
/ 02 марта 2019

Попробуйте это регулярное выражение (возможно)

^(?!On.*$).*
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...