0

文字列の最初のインスタンスの後に別の文字列が続く場合にのみ、一致を返そうとしています。ただし、後で表示される可能性がありますが、その場合は一致したくありません。

Thing #1
.........
hidden=true
.........
Thing #2
.........
hidden=false
.........

現在、私は使用していますThing #1[\S\s]*?hidden=falseが、明らかに、私が望んでいないときに上記の例に一致するものを返します。最初の hidden= の後に false が続く場合のみ。キャプチャ グループを使用してそれを行う方法は知っていますが、それは私にとって非常に複雑です。私は Android で Tasker を使用しており、キャプチャ グループは非常に困難で時間がかかります。これどうやってするの?

4

2 に答える 2

0

あなたは近くにいます。Thing #1一致したものと次のマーカーの間に別のものが入らないようにするだけです。

否定的な先読みを使用します。

Thing #1((?!Thing #1)[\S\s])*?hidden=false
于 2016-10-02T05:19:15.377 に答える
0

Thing #<number>この否定正規表現は、テキストの最初のインスタンスの後に が続く場合に検索しhidden=falseます。

^.*?Thing #\d+(?:(?!hidden=(?:true|false))[\S\s])*?hidden=false

hidden=trueが最初に見つかった場合、一致はありません。

正規表現のデモ

于 2016-10-02T05:44:56.200 に答える