我的正则表达式:
^[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-containing-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}