首页 > 解决方案 > 如何查找python字符串中是否存在字符串模式?

问题描述

假设我有一个字符串数组。我想找到所有包含以下子字符串的字符串,字符数字数字字符(CDDDC 将是模式)。例如格式如下:H554L K007K

是否有任何快速字符串表达式匹配来查找此类事件?

标签: pythonstring

解决方案


这样的事情是“正则表达式”的领域。正则表达式用于模式匹配。它本身就是一个宽泛的主题,无法在这里解释(检查regexbuddy 或其他站点)。

repython 在(以及regex模块)下内置了一个正则表达式编译器。因此,一个简单的解决方案是:

word for word in somelist if re.search(r"[a-zA-Z]\d{3}[a-zA-Z]", word)

它遍历 somelist,并选择任何匹配(完全)两个“范围”之一中的字符,后跟 3 位数字,然后是范围中的字符。

如评论中所述:re.search将匹配(查找)具有与“模式”匹配的该项目的“部分”的任何项目。所以它会匹配a123b以及abc b123cd. 如果您希望确保数组中的完整“单词”与子字符串匹配,请re.fullmatch改用。
Fullmatch 将匹配a123b但不匹配abc b123cd和不匹配ab123cd


推荐阅读