2016-08-02 7 views
1

PCRE 8.39のMariaDB 10.0.26でこれを実行しています。単語のグループが最初に出現する場合、データの特定の式から除外します

言ってやるが、私はプリンタ、カートリッジ、トナーはセット、キット、またはバンドルを除外したいです。

(?<items>Printer|Cartridge|Toner)(?<sets>Kit|Bundle|Set)(?(?=\g<items>)(?!\g<sets>)) 

という名前のグループはあまり問題で、私はちょうどすべてをしようとしていたはずです。

は、だから私はこれを書きました。

だけで、私はこの表現をしたい、と言って:

titleField regexp '(?<items>Printer|Cartridge|Toner)(?<sets>Kit|Bundle|Set)(?(?=\g<items>)(?!\g<sets>))' to return 0 and not 1. 

私は、これは手のひらを顔に当てる立派なものでなければならないにもかかわらず、私が間違っているの何失われ、この時点で午前(~~!!)。 助けてください。

+0

あなたはネガティブなビハインドを探しているようですが、私は未知の幅ではありません。先読み '^(?!。*(Printer | Cartridge | Toner)。*(Kit | Bundle | Set) *(キット|バンドル|セット) ' –

+0

Wiktor、私はそれを正しく受け入れることができるように返信を投稿してください。 (?!。*(プリンタ|カートリッジ|。トナー)*(キット|バンドル|セット)) ^ あなたは明らかに二回第二部でコピー。 助けてくれてありがとうございました。 –

答えて

1

あなたは文字列がPrinterCartridgeまたはToner(Printer|Cartridge|Toner))が含まれている場合、改行(.*)以外の0+文字の後にどこかで試合を失敗します

^(?!.*(Printer|Cartridge|Toner).*(Kit|Bundle|Set)) 

先読み(?!.*(Printer|Cartridge|Toner).*(Kit|Bundle|Set))を使用することができます。

the regex hereをテストできます。

関連する問題