我有一堆字符串,例如:
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)之外的所有文本以及以[space] [space] On开头的每一行。
我可以使用regexp选择所有没有字段名称的内容:
(object)|(: .*)|(end)|( .*)
但是我无法取消选择以“开”开头的行。 您可以帮助我将我的正则表达式与此正则表达式一起加入,但我希望从选择中删除这些行吗?:
(^(?:(?! On).)*$)
答案 0 :(得分:1)
您可以在最后一个替代项中使用负前行(?! On)( .*)
来检查右边的不是2个空格,然后是On:
(object)|(: .*)|(end)|(?! On)( .*)
由于比赛是在比赛的开始和结束,因此更精确的比赛可能是使用锚点^
和$
:
^(object)|(: .*)$|^(end)$|^(?! On)( .*)
请注意,您也可以在不使用捕获组的情况下获得匹配项:
^object|: .*$|^end$|^(?! On) .*
答案 1 :(得分:0)
尝试此正则表达式(也许)
^(?!On.*$).*