我尝试了几个小时才能找到符合此条件的正则表达式:
需要找到以下内容:
这里有文字示例:(需要与“ 159C5F”匹配
AT exempt acc to §§ 4 Nr. 1A UStG iVm 6 USTG
254,49/100L 977,23
159C5F Magnatec St-St 0W-30 D, 20L E4 0,00%
Commodity Code :
以下是我的一些尝试:
(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]{6})
[0-9]{2}\S*[a-zA-Z0-9]{4}
[0-9]\S*[a-zA-Z0-9]{6}
[a-zA-Z0-9]{6}
答案 0 :(得分:4)
如果我正确理解了您的要求,则可以使用以下方式:
\b\d\d(?=\S*?[A-Z]\S*?\s)[A-Z0-9]{4}\s
一些注意事项:
如果您不希望在末尾捕获空格,则可以用前瞻字符(即\s
)替换最后的(?=\s)
。
如果只想接受ASCII空格字符,不接受其他空格字符,则在两种情况下都可以使用[ ]
代替\s
。
答案 1 :(得分:2)
您可以使用单词边界和正向前行来在末尾声明空格,但不对其进行匹配以仅获得159C5F
\b\d{2}(?=[A-Z0-9]{4} )[A-Z0-9]*[A-Z][A-Z0-9]*\b
\b
字边界\d{2}
匹配两位数字(?=
正向前进,断言右边是
[A-Z0-9]{4}
匹配任何列出的内容四次,后跟一个空格)
提前关闭[A-Z0-9]*[A-Z][A-Z0-9]*
用至少一个大写字符匹配0+次A-Z0-9 \b
字边界