私の正規表現:
^[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}