使多个字符和数字组合成正则表达式

2024-05-13 22:44:40 发布

您现在位置:Python中文网/ 问答频道 /正文

如何编写将数字和字符以任意顺序组合成字符串的正则表达式? 例如,如果我想读取某种发票编号,我有如下示例:

example 1: 32ah3af
example 2: 32ahPP-A2ah3af
example 3: 3A63af-3HHx3B-APe5y5-9OPiis
example 4: 3A63af 3HHx3B APe5y5 9OPiis

因此,每个“块”的长度在3到7个字符(字母或数字)之间,可以是任意顺序(字母可以是小写或大写)。每人。”“块”可以以字母或数字开头。 它可以有一个“块”或最多4个用' '-分隔的块

我知道我可以制作像:\s\-这样的分隔符,但我不知道如何制作这些具有(或不具有)分隔符的块

我试过这样的方法:

([0-9]?[A-z]?){3,7}

但它不起作用


Tags: 字符串示例顺序example字母数字发票字符
2条回答

你可以用

^[A-Za-z0-9]{3,7}(?:[ -][A-Za-z0-9]{3,7}){0,3}\b

模式匹配:

  • ^字符串的开头
  • [A-Za-z0-9]{3,7}将小写或大写字符a-z或数字0-9匹配3-7次
  • (?:非捕获组
    • [ -][A-Za-z0-9]{3,7}匹配空格或{},并将小写或大写字符a-z或数字0-9匹配3-7倍
  • ){0,3}关闭非捕获组,重复0-3次,最多出现4次
  • \b防止部分匹配的单词边界

Regex demo

注意[A-z]{a2}比[A-Za-z0-9]

只要您只想捕获/搜索发票ID,Hao Wu的建议就有效:

 r'\w{3,7}'

对于正则表达式(检查here

如果你能放下剩下的部分,那么这就足够了

您可以使用example 1更精确地捕获整个字符串:

r'example (\d+): ((\w{3,7}[\- ]?)+)'

参见here它是如何工作的。请注意捕获组是如何表示的

相关问题 更多 >