Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 卡在C中的正则表达式上#_C#_Regex - Fatal编程技术网

C# 卡在C中的正则表达式上#

C# 卡在C中的正则表达式上#,c#,regex,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" ::=

我现在有这个

([\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”之后的任何字符,该字符串不是“:=”直到它实际找到“:=”这很有效,直到我注意到

[^[::=]*]* 
实际上是指:or=而不是exact字符串“:=”那么我该如何修复它呢

编辑:如果有人还在这里,所以我不需要再问其他问题,我如何忽略两人之间的任何和所有字符、符号、数字等。“
示例:
不要忽略这个“忽略这里的一切”不要再次忽略“再次忽略”等

你可以在这种结构中使用a:

(?:(?!::=).)*
要匹配除
以外的任何字符,请执行以下操作:=


顺便说一下,
[^[::=]*]*
将匹配除
[
=
]
之外的任何字符,然后是0个或更多的
]


对于第二部分,您可以使用类似的方法,并进行一些简化:

([\w"-]+)[ ]+OBJECT-TYPE(?:"[^"]*"|(?!::=).)*::=[ ]*{[ ]*([\w"-]+) ([\w"-]+)

尝试(:|=)将选择其中一个。不确定是否需要转义:或=尽管。

您可以尝试负面环视:


^((?!:=))*

没有其他选择吗?我不喜欢lookaheads,它们在大文件和多个文件上占用了太多的CPU资源,@Vajura我也不太喜欢它们,但是不,如果使用否定类,它会复杂得多。你可以搜索“替代消极前瞻”,我得到的第一个选项是。你能定义“忽略”和“忽略”是什么意思吗不要忽视"? 正则表达式是关于匹配和不匹配。。。也许你的意思是引号之间的
:=
不应该被视为真的
:=
,有点像一个注释?哦,是的,对不起,糟糕的措辞,我只是说逗号之间的所有内容都应该与正则表达式匹配,是的,正如你说的,它不应该被视为真的:=@Vajura好的,我不确定您到底想在哪里使用这种行为,但我已经编辑了我的答案,以便在
对象类型
之后加引号的内容被“忽略”。让我知道这是否适用于您:)