阻止regex跨越不需要的内容

本文关键字:不需要 regex 跨越 阻止 | 更新日期: 2023-09-27 18:00:02

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

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

不幸的是,在某些地方,为了获得真正的匹配,这需要跨越相当多的内容,而惰性量词(?)并不像我希望的那样惰性。

我如何修改以上内容,以便从以下内容中删除:

"indicator.value here"[false],"其他内容","更多其他content","指示符与此指示符不匹配,因为缺少句号"[true],"指示符。这是我想要匹配的值"[true]

只返回以下值:"indicator.this is the value I want match"[true]

目前,我上面的regex正在返回整个字符串。

阻止regex跨越不需要的内容

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

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

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

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

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

工作演示

匹配信息

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