python - 如何在字符串中查找模式

标签 python regex

我在查找字符串中的模式位置时陷入困境。该字符串由 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 demoregex 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/

相关文章:

python - 如何在 Django API 中显示结果

python - 使用Python进行多处理: How to parallelize nested loops and append results to dictionary?

python - 使用 python 的子进程处理寻呼机

Java正则表达式来验证数字逗号分隔的数字和连字符

regex - 如何使用正则表达式前瞻来限制输入字符串的总长度

JavaScript 正则表达式获取引号字符串中的单词

python - 在CKAN中上传文件但收到 'Could not connect to DataPusher'错误

python - 在条形图中使用 yerr 以及将数据透视表与 Pandas 一起使用时出现 ValueError

当循环超过 100 个不同的正则表达式时,Python re 模块变得慢 20 倍

python - 不匹配正则表达式中的一组字符