python - 如何查找python字符串中是否存在字符串模式?
问题描述
假设我有一个字符串数组。我想找到所有包含以下子字符串的字符串,字符数字数字字符(CDDDC 将是模式)。例如格式如下:H554L K007K
是否有任何快速字符串表达式匹配来查找此类事件?
解决方案
这样的事情是“正则表达式”的领域。正则表达式用于模式匹配。它本身就是一个宽泛的主题,无法在这里解释(检查regexbuddy 或其他站点)。
re
python 在(以及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
推荐阅读
- r - 如何将列表中的列除以存储在另一个列表中的不同值?
- regex - sed 匹配字符类中打开/关闭的所有括号/大括号
- ruby-on-rails - Rspec如何避免allow_any_instance_of
- html - 展开子元素以填充父元素高度时避免多余的 flex/flex-grow
- javascript - 使用 GMT JavaScript 显示准确时间
- json - Código de estado:404 未找到 Angular 8 JSON
- python - 将变量从python传递到jinja2
- python - 如何在 for 循环中创建的 python tk.entry 上添加变量名
- python - 评论 /* ... */: 什么是正确的正则表达式?
- haskell - 操作列表中的单个项目