我在查找字符串中的模式位置时陷入困境。该字符串由 6 个字符组成,仅包含大写字母 (A-Z) 或数字 (0-9)。
check_string = 'I have a string 09A4N5'
我必须找到'09A4N5'的位置,它可以是类似格式的任何其他字符串。我尝试使用正则表达式,并找到了下面提到的解决方案,它给出了单词 'string' 的位置。
re.search('\w+\w+\w+\w+\w+\w',check_string).start()
9
最佳答案
您可以使用
m = re.search(r'\b[A-Z0-9]{6}\b', check_string)
if m:
print(m.group()) # => 09A4N5
print(m.start(0)) # => 16
请参阅Python demo和 regex demo .
图案详细信息
\b
- 字边界[A-Z0-9]
- 大写 ASCII 字母或数字{6}
- 正好六次
\b
- 字边界。
如果您想在正则表达式中要求至少一位数字和至少一个大写字母,请使用
r'\b(?=[A-Z]*\d)(?=\d*[A-Z])[A-Z0-9]{6}\b'
请参阅regex demo 。在这里,
(?=[A-Z]*\d)
- 需要至少一位数字(?=\d*[A-Z])
- 需要至少一个大写字母
关于python - 如何在字符串中查找模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53146447/