Skip to main content
 首页 » 编程设计

python 正则表达式之找到几个可选字符组之一

2024年08月13日35Leo_wl

我有以下(离散的)字符串:

um 
yum 
umpire 
µm 
mi 
micro 

这些字符串将按原样找到,而不是作为较长文本的一部分。 (它们是电子表格中可能的单元格值)。

我希望找到所有“um”或“µm”或“mi”或“micro”(但不是 umpire 或 yum)的字符串

我正在努力理解字符分组测试。这是我所拥有的:

[(um)(µm)(mi)] 

我也尝试过变体,例如:

^[(?:um)|(?:µm)|(?:mi)] 

但还没有发现魔法。

RegEx 101 Demo

如果以下(上方,顶部)字符串返回 True,则期望的结果是:

"um", "µm", "mi", "micro" 

请您参考如下方法:

您可以将此正则表达式与 anchor 一起使用:

^(?:[uµ]m|mi(?:cro)?)$ 

Updated RegEx Demo

正则表达式详细信息:

  • ^:开始
  • (?: 启动非捕获组。这是一个非捕获组,因为它执行操作(即返回 bool 值 true/false),但不选择指定的文本
    • [uµ]m:匹配u或µ后接m,即匹配um 和 µm
    • |:或者
    • mi(?:cro)?:匹配 mi,或者如果需要的话在末尾加上 cro。
  • ):结束非捕获组
  • $:结束

我们使用 ^ 和 $( anchor )来确保匹配 if and only if正则表达式是整个字符串:这就是为什么我们有 ?:,因为它的效果包含在 anchor 中。