我只是在字符串的第一个实例后跟另一个字符串时才尝试返回匹配项。但是它们可能会在稍后出现,但我当时不想要比赛。
Thing #1
.........
hidden=true
.........
Thing #2
.........
hidden=false
.........
现在我正在使用Thing #1[\S\s]*?hidden=false
,但很明显,当我不想要它时,会返回上述示例的匹配项。仅当第一个hidden =后跟false时。我知道如何使用捕获组来完成它,但这会让我感到非常复杂,我在Android上使用Tasker并且捕获组是一个巨大的考验和缓慢。我怎么能这样做?
答案 0 :(得分:0)
你关闭了。您只需要阻止另一个Thing #1
介于匹配的事物和下一个标记之间。
使用负面展望:
Thing #1((?!Thing #1)[\S\s])*?hidden=false
答案 1 :(得分:0)
如果后面跟Thing #<number>
,则此否定正则表达式会在文本中搜索第一个hidden=false
实例:
^.*?Thing #\d+(?:(?!hidden=(?:true|false))[\S\s])*?hidden=false
如果首先找到hidden=true
,则不会有任何匹配。