坚持使用C#中的正则表达式

时间:2014-07-17 12:35:34

标签: c# regex

我目前有这个

([\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"之后搜索任何字符。那不是" :: ="直到它被发现" :: ="这很有效,直到我注意到

[^[::=]*]* 

实际意味着:或=而不是精确的字符串" :: ="那我怎么解决这个问题?

编辑:如果有人还在这里,我不需要再打开另一个问题,我怎么能忽略两个之间的所有字符,符号,数字等等。
例如:
 不要忽视这个"忽略这里所有的东西"不要再忽视"再次忽略"等

3 个答案:

答案 0 :(得分:2)

您可以在此类构造中使用negative lookahead

(?:(?!::=).)*

匹配除::=以外的任何字符。


顺便说一下,[^[::=]*]*将匹配除[:=]以及0或更多{{}之外的任何字符。 1}}。


对于第二部分,您可以使用类似的东西,并应用一些简化:

]

答案 1 :(得分:0)

尝试选择一个或另一个的(:| =)。不确定你是否需要逃避:或=虽然。

答案 2 :(得分:0)

你可以尝试消极的外观:

^((?!::=).)*