我目前有这个
([\w\-"]+)[ ]+OBJECT-TYPE[^[::=]*]*::=[ ]*\{[ ]*([\w\-"]+) ([\w\-"]+)
它的作用是搜索这样的东西:
DATA1 OBJECT-TYPE
SYNTAX SEQUENCE OF ContactInfoEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A table containing Contact Info information"
::= { DATA2 DATA3 }
我只有一个问题,我认为我已经修复了
OBJECT-TYPE[^[::=]*]*::=
这是为了在字符串" OBJECT-TYPE"之后搜索任何字符。那不是" :: ="直到它被发现" :: ="这很有效,直到我注意到
[^[::=]*]*
实际意味着:或=而不是精确的字符串" :: ="那我怎么解决这个问题?
编辑:如果有人还在这里,我不需要再打开另一个问题,我怎么能忽略两个之间的所有字符,符号,数字等等。
例如:
不要忽视这个"忽略这里所有的东西"不要再忽视"再次忽略"等
答案 0 :(得分:2)
您可以在此类构造中使用negative lookahead:
(?:(?!::=).)*
匹配除::=
以外的任何字符。
顺便说一下,[^[::=]*]*
将匹配除[
,:
,=
,]
以及0或更多{{}之外的任何字符。 1}}。
对于第二部分,您可以使用类似的东西,并应用一些简化:
]
答案 1 :(得分:0)
尝试选择一个或另一个的(:| =)。不确定你是否需要逃避:或=虽然。
答案 2 :(得分:0)
你可以尝试消极的外观:
^((?!::=).)*