用于从正则表达式的其余部分排除包含字符串的行的正则表达式
Regexp for excluding line containing string from rest of the regexp
我有一堆字符串,例如:
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
我想要 select 除对象名称(在本例中为字段和 btn)以及以 [space][space] 开头的每一行之外的所有文本。
我可以 select 没有字段名称的所有内容都可以使用正则表达式,如下所示:
(object)|(: .*)|(end)|( .*)
但我无法删除 select 以 "On" 开头的行。
你能帮我用这个正则表达式加入我的正则表达式,排除我想要的 selection 中的这些行吗?:
(^(?:(?! On).)*$)
试试这个正则表达式(也许)
^(?!On.*$).*
您可以对最后一次交替使用否定前瞻 (?! On)( .*)
来检查右边的内容不是 2 个空格后跟 On:
(object)|(: .*)|(end)|(?! On)( .*)
由于您的匹配是在开始和结束时进行的,更精确的匹配可能是使用锚 ^
和 $
:
^(object)|(: .*)$|^(end)$|^(?! On)( .*)
请注意,您也可以在不使用捕获组的情况下获取匹配项:
^object|: .*$|^end$|^(?! On) .*
我有一堆字符串,例如:
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
我想要 select 除对象名称(在本例中为字段和 btn)以及以 [space][space] 开头的每一行之外的所有文本。
我可以 select 没有字段名称的所有内容都可以使用正则表达式,如下所示:
(object)|(: .*)|(end)|( .*)
但我无法删除 select 以 "On" 开头的行。 你能帮我用这个正则表达式加入我的正则表达式,排除我想要的 selection 中的这些行吗?:
(^(?:(?! On).)*$)
试试这个正则表达式(也许)
^(?!On.*$).*
您可以对最后一次交替使用否定前瞻 (?! On)( .*)
来检查右边的内容不是 2 个空格后跟 On:
(object)|(: .*)|(end)|(?! On)( .*)
由于您的匹配是在开始和结束时进行的,更精确的匹配可能是使用锚 ^
和 $
:
^(object)|(: .*)$|^(end)$|^(?! On)( .*)
请注意,您也可以在不使用捕获组的情况下获取匹配项:
^object|: .*$|^end$|^(?! On) .*