C# 阻止正则表达式跨越不需要的内容
我需要从文件中提取一系列有意义的值。我需要匹配的值的基本模式如下所示:C# 阻止正则表达式跨越不需要的内容,c#,regex,C#,Regex,我需要从文件中提取一系列有意义的值。我需要匹配的值的基本模式如下所示: "indicator\..+?"\[true\] 不幸的是,在某些地方,它跨越了相当多的内容以获得真正的匹配,而懒惰量词(?)并不像我所希望的那样懒惰 我如何修改上述内容,以避免出现以下情况: “此处的indicator.value”[false]、“其他内容”、“更多其他内容” 内容“,”指标与此指标不匹配,因为缺少句号“[真],”指标。这是 我希望匹配的值“[正确] 仅返回此值:“indicator.this is t
"indicator\..+?"\[true\]
不幸的是,在某些地方,它跨越了相当多的内容以获得真正的匹配,而懒惰量词(?)并不像我所希望的那样懒惰
我如何修改上述内容,以避免出现以下情况:
“此处的indicator.value”[false]、“其他内容”、“更多其他内容”
内容“,”指标与此指标不匹配,因为缺少句号“[真],”指标。这是
我希望匹配的值“[正确]
仅返回此值:“indicator.this is the value I want matched”[true]
目前,我上面的正则表达式正在返回整个字符串。尝试使用
指示符\.(.*)“\[true\]
,看看是否有帮助。我认为懒惰只适用于*
操作符。我隐约记得几年前就有过这个问题。假设逗号是分隔符,只需避免匹配:
@"""indicator\.[^,]+?""\[true\]"
您可以通过丢弃不想要的模式来利用丢弃技术。所以,你可以有这样的东西:
"indicator\..+?"\[false\]|"indicator\.(.+?)"\[true\]
Discard this pattern --^ Capture this --^
匹配信息
MATCH 1
1. [150-182] `this is the value I want matched`
即使是真的,你也错过了一个
,谢谢约翰·桑德斯,他以后会避免这样做的。