正規表現の質問 - 等しくない場合の文字列の一致

正規表現の質問 - 等しくない場合の文字列の一致

私の正規表現:

^[0-9]{9}_(010020)(004)-[0-9,a-z,A-Z]+__[0-9]{8}_[0-9]{4}

次の文字列と一致します。

010020004_010020004-xxxxxxxxxxxxxxxxxx_20180105_1606

上記の方法は大丈夫です。しかし、(004)太字の文字列と等しくない文字列を一致させたい場合です。否定的な予測(?!004)を試しましたが、文字列と一致しませんでした。

^[0-9]{9}_(010020)**(?!004)**-[0-9,a-z,A-Z]+__[0-9]{8}_[0-9]{4}

010020004_010020005-xxxxxxxxxxxxxxxxxx_20180105_1606

私は何も逃したことがない

ベストアンサー1

あなたのパターンと答えに基づいてhttps://stackoverflow.com/questions/1971738/regex-for-all-strings-not-changing-a-string:私のエディタでは、次のパターンが機能します。 ^[0-9]{9}_(010020).*(?<!004)-[0-9,a-z,A-Z]+_[0-9]{8}_[0-9]{4}

あなたのパターンに「+」記号の後に追加のアンダースコアがあるようです。まず、最後の3文字を一致させてから、「004」ではないことを確認する必要があります。

正確な形式に応じて、3桁の数字のみが一致することを確認できます。^[0-9]{9}_(010020)([0-9]*(?<!004)){3}-[0-9,a-z,A-Z]+_[0-9]{8}_[0-9]{4}

おすすめ記事