阻止正则表达式跨越不需要的内容

时间:2015-06-25 23:35:08

标签: c# regex

我需要从文件中提取一系列有意义的值。我需要匹配的值的基本模式如下:

"indicator\..+?"\[true\]

不幸的是,在这些地方,这是跨越相当多的内容以获得真正的匹配,而懒惰的量词(?)并不像我想的那样懒惰。

如何修改上述内容,使其超出以下范围:

  

“indicator.value here”[false],“其他内容”,“更多其他内容   内容“,”指标与此匹配不匹配,因为完全停止缺少“[true],”指示符。这是   我希望匹配的值“[true]

仅返回此值:“indicator.this是我想要匹配的值”[true]

目前,我的上述正则表达式返回了整个字符串。

3 个答案:

答案 0 :(得分:1)

假设逗号是分隔符 - 只需避免匹配它们:

@"""indicator\.[^,]+?""\[true\]"

答案 1 :(得分:0)

尝试使用"indicator\.(.*)?"\[true\],看看是否有帮助。我认为懒惰仅适用于*运算符。我依稀记得几年前有这个问题。

答案 2 :(得分:0)

您可以通过丢弃您不想要的模式来利用丢弃技术。所以,你可以这样:

"indicator\..+?"\[false\]|"indicator\.(.+?)"\[true\]
Discard this pattern --^ Capture this --^

<强> Working demo

匹配信息

MATCH 1
1.  [150-182]   `this is the value I want matched`