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
Regex 正则表达式组不是以_Regex_Regex Group - Fatal编程技术网

Regex 正则表达式组不是以

Regex 正则表达式组不是以,regex,regex-group,Regex,Regex Group,我很难在一个用来处理.ini文件的正则表达式中计算出2个正则表达式 我有一个,我建议你用rubular和这些例子来理解 ^(?<key>[^=;\r\n]+)=((?<value>\"*.*;*.*\"[^;\r\n]*);?(?<comment>.*)[^\r\n]*) 要匹配: 这=不是;建议 这=isa;议论 这=isa;特殊的案例 我有一个: ^(?<key>[^=;\r\n]+)=(?<value>[^;\r\n]*);?(

我很难在一个用来处理.ini文件的正则表达式中计算出2个正则表达式

我有一个,我建议你用rubular和这些例子来理解

^(?<key>[^=;\r\n]+)=((?<value>\"*.*;*.*\"[^;\r\n]*);?(?<comment>.*)[^\r\n]*)
要匹配:

这=不是;建议 这=isa;议论 这=isa;特殊的案例 我有一个:

^(?<key>[^=;\r\n]+)=(?<value>[^;\r\n]*);?(?<comment>[^\r\n]*)
相配

这是一个简单的例子 这很简单;议论 我正在尝试合并2个正则表达式,遗憾的是,我无法说我的值组是否不是从\开始使用第二个正则表达式,如果不是使用第一个正则表达式

现在我有了这个:

^(?<key>[^=;\r\n]+)=(((?<value>\"*.*;*.*\"[^;\r\n]*);?(?<comment>.*)[^\r\n]*)|(?<value>[^;\r\n]*);?(?<comment>[^\r\n]*))
但是它为这个简单的案例创建了两个未命名的部分,没有引用。我在想,也许通过为简单案例添加值组的第一项不能以\开头。但我没能做到

PS:我建议你使用rubular来更好地理解我的问题。对不起,如果我不够清楚

这个怎么样

^(?<key>[^=;\r\n]+)=(?<value>"[^"]*"|[^;\n\r]*);?(?<comment>.*)
?[^=;\r\n]+与=符号前的部分匹配。 [^]*匹配双引号内的字符串,例如foobar字符串。如果没有,则正则表达式引擎将转到下一个模式[^;\n\r]*并匹配到第一个模式;或换行符或\r字符。这些匹配的字符存储在名为value的命名组中。 ;? 可选分号。 ?*其余字符存储在注释组中。
谢谢你,兄弟,但它不适用于:This=isa;特殊的案例对于这一个,我们应该有:Thisisa;这就是为什么我有这么多麻烦。如果有,;内部报价不应被检测为评论。谢谢!太完美了。你能解释一下你是如何建立正则表达式的吗?我想学习如何思考来构建这样的东西。