我使用下面的正则表达式来查找我要查找的大多数匹配项,我试图标记任何“ml”后面跟着最多 9 位数字,只要该数字不在 1900-2100 范围内。我遇到的问题是“19750ml”,我甚至不知道在同一个正则表达式中是否可以实现。只要有一个 QUOTE 字符后跟一个 2 位数字,我就不想选择该部分。这个正则表达式匹配“0ml”,因为值 1975 在其前面,但是在这个后跟 2 位数字的单引号中,我希望它标记为“750ml”。换句话说,后跟 2 位数字的 QUOTE 是否可以具有最高优先级?这在 Microsoft SQL 2019 中用作函数。
(?i)(?<!\b(?:19|2[01])\d(?=\d))(?<!\b(?:19|2[01])(?=\d{2}))(?<!\b(?:1(?=9\d{2}))|2(?=[01]\d{2}))(?!\b(?:19|2[01])\d\d)\d{0,9}ml$
以下是一些示例以及上述正则表达式匹配的内容:
玛丽有只小羊羔 1980 750ml
测试 1981 9ml
测试 1982 18ml
测试 2123 456ml
测试 2034 9876ml
测试 2099 12345ml
测试 1999 123456ml
测试987654321ml
测试 '1975 0ml <--- 这家伙是我的问题
测试 1988 ml
测试9999ml
测试 2000 ml
测试100ml
测试 ' 2529ml <--- 我希望它标记为“29ml”,保留引号后跟2个数字