Python 正则表达式:匹配内部具有相同特殊字符的文本

Python 正则表达式:匹配内部具有相同特殊字符的文本,python,regex,Python,Regex,我有多个文档需要与我们内部的一些代码匹配: 代码具有以下结构:CRL-LLL-LLL-LLL-LLL-DDDD |示例:CRL-SYW-CON-LKA-TMP-800001 主要有正确的案例,但也有这种情况的案例:CRL-SYW-CON-LKA-TMP-XXXXXX(因为他们不知道数字) 请看这个: 只是在Sublime文本中进行了测试,我使用以下方法得出了一些结果:.*-\d{6}但是它需要更多我不需要的部分: 这个想法可能是这样的: 读取并查找以CRL开头的所有字符串 停到下一个空间

我有多个文档需要与我们内部的一些代码匹配: 代码具有以下结构:CRL-LLL-LLL-LLL-LLL-DDDD |示例:CRL-SYW-CON-LKA-TMP-800001

主要有正确的案例,但也有这种情况的案例:CRL-SYW-CON-LKA-TMP-XXXXXX(因为他们不知道数字)

请看这个:

只是在Sublime文本中进行了测试,我使用以下方法得出了一些结果:.*-\d{6}但是它需要更多我不需要的部分:

这个想法可能是这样的:

  • 读取并查找以CRL开头的所有字符串
  • 停到下一个空间
  • 返回至少包含2“-”的字符串
谢谢

您可以使用

re.findall(r'\bCRL(?:-[A-Z]{3}){4}-(?:\d{6}|X{6})\b', text)

详情:

  • \b
    -单词边界
  • CRL
    -一个
    CRL
    字符串
  • (?:-[A-Z]{3}){4}
    -四个重复的
    -
    和三个大写字母
  • -
    -连字符
  • (?:\d{6}X{6})
    -六位数字或六个
    X
    字符
  • \b
    -单词边界

你能告诉我们到目前为止你用Python做了什么吗?你所描述的是用正则表达式很容易做到的,试着阅读一下正则表达式文档,你就会成功。
\bCRL(?:-[a-Z]{3}{4}-(?:\d{6}X{6})\b
这太好了!这是一种创建范围的方法吗??像这样的东西对我很管用,但看起来很难看:\bCRL(?:-[A-Z]{3}{4}-(?:\d{6}}}\d{5}X{6}X{5}X{4}X{3})b.@jjsgana是的,
(?:\d{5,6}X{3,6})
{5,6}
匹配五到六次,而
{3,6}
匹配三到六次。这些是。另外,在regex101.com上测试regexp还有一个好处:如果你点击左边的代码生成器链接,你会看到一些。这太棒了。非常感谢你!嘿,威克托,我发现了这种情况:。在你给我的正则表达式代码中,有没有一种简单的方法可以抓取它们呢?哇,Wiktor的工作原理太棒了。谢谢你的帮助。你是regex mate上的机器。学习如何做到这一点需要几周的时间。我将在空闲时间学习更多的正则表达式。你的帮助是继续学习的巨大动力。