Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.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/2/ionic-framework/2.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#_Regex - Fatal编程技术网

C# 正则表达式帮助(再次)

C# 正则表达式帮助(再次),c#,regex,C#,Regex,我真的不知道该如何命名,但我需要一些正则表达式方面的帮助。首先,我想澄清的是,我并没有试图匹配HTML或XML,尽管看起来可能是这样,但事实并非如此。下面的内容是我为一个程序使用的文件格式的一部分,该程序用于指定应在该程序中导出哪些详细信息。没有涉及层次结构,只是每一行包含一个“标记”: <n> 这与我的程序匹配以查找枚举,它告诉我的程序导出名称值,无论如何,我也有如下标记: <adr:home> 这将指定家庭地址。我使用以下正则表达式: <((?'TA

我真的不知道该如何命名,但我需要一些正则表达式方面的帮助。首先,我想澄清的是,我并没有试图匹配HTML或XML,尽管看起来可能是这样,但事实并非如此。下面的内容是我为一个程序使用的文件格式的一部分,该程序用于指定应在该程序中导出哪些详细信息。没有涉及层次结构,只是每一行包含一个“标记”:

<n>

这与我的程序匹配以查找枚举,它告诉我的程序导出名称值,无论如何,我也有如下标记:

<adr:home>

这将指定家庭地址。我使用以下正则表达式:

<((?'TAG'.*):(?'SUBTAG'.*)?)?(\s+((\w+)=('|"")?(?'VALUE'.*[^'])('|"")?)?)?>

如果将冒号作为第二个标记的一部分,会怎么样

<((?'TAG'.*)(?':SUBTAG'.*)?)?(\s+((\w+)=('|"")?(?'VALUE'.*[^'])('|"")?)?)?>

不完全确定您的目标是什么,但请尝试以下方法:

(?><)(?'TAG'[^:\s>]*)(:(?'SUBTAG'[^\s>:]*))?(\s\w+=['"](?'VALUE'[^'"]*)['"])?(?>>)
(?>]*)(:(?'SUBTAG'[^\s>:]*))(\s\w+=[''”](?'VALUE'[^']*)[''])(?>>)
我发现测试C#regex表达式非常有用。

这会有帮助吗

<((?'TAG'.*?)(?::(?'SUBTAG'.*))?)?(\s+((\w+)=('|"")?(?'VALUE'.*[^'])('|"")?)?)?> 

如果将“:”移动到子标记捕获组中会发生什么情况。例如(?“子标记”:*)?。然后你可以从捕获组中去掉前导“:”。这似乎也不起作用。它仍然会将整个内容返回到标记组,并将子标记组保留为空。你也需要使标记组为none greedo,请参见我的答案。不,这不起作用。你确定把它放对了吗,冒号不应该是组名的一部分,是吗?This不起作用,似乎发生的事情是程序没有读取到冒号,只是将所有内容都放在标记组中。就像这样?(忽略正则表达式的第二部分)。