我一直试图使用正则表达式捕获字符串(6个字符),如ABC123
(或大写字母和数字的任意组合)。我可以抓住ABCDE1
或1ABCDE
甚至AC34FG
。只要字符串包含至少1个CAPITAL 和 1数字,正则表达式就可以正常工作。但ABCDEF
或123456
之类的东西却没有!我错过了什么?我使用的正则表达式是:
(?<=\t)([0-9]+[A-Z]+|[A-Z]+[0-9]+)[0-9A-Z]*(?=\t)
任何帮助将不胜感激!谢谢!
答案 0 :(得分:1)
在(?<=\t)([0-9]+[A-Z]+|[A-Z]+[0-9]+)[0-9A-Z]*(?=\t)
模式中,您明确要求至少1个数字后面至少有一个字母(带[0-9]+[A-Z]+
)(反之亦然,[A-Z]+[0-9]+
)仅在选项卡之间字符。
要匹配由大写ASCII字母或数字组成的选项卡之间的任何6个字符串子字符串,您可以使用
(?<=\t)[A-Z0-9]{6}(?=\t)
请参阅this regex demo。
或者,也要在字符串的开头/结尾匹配:
(?<![^\t])[A-Z0-9]{6}(?![^\t])
答案 1 :(得分:0)
如果我理解正确,你的方法就太复杂了。
/\b[A-Z0-9]{6}\b/
捕获任何(精确)6个字符的字符串,只要存在大写字母或数字或两者。
请注意\b
部分作为单词边界,您可以将这些分隔符更改为符合您需要的任何内容。
另一个警告:A-Z只捕获26个大写字符,变音符号或重音字符不会在这里使用,如果您的引擎支持它并且您的数据需要它,请使用类似\p{L}
的内容。有关详细信息,请参阅https://www.regular-expressions.info/unicode.html。