【问题标题】:Python negative regexPython负正则表达式
【发布时间】:2017-02-01 19:05:55
【问题描述】:

我有一个字符串,例如:

s = "The code for the product is A8H4DKE3SP93W6J and you can buy it here."

这个字符串中的文本不会一直是相同的格式,它会是动态的,所以我不能做简单的查找和替换来获取产品代码。

我可以看到:

re.sub(r'A[0-9a-zA-Z_]{14} ', '', s)

将获得产品代码。我该如何做与此相反的操作,即删除除产品代码之外的所有文本?产品代码始终为 15 个字符的字符串,以字母 A 开头。

我一直在绞尽脑汁并在谷歌上搜索以找到解决方案,但似乎无法弄清楚。

谢谢

【问题讨论】:

标签: python regex


【解决方案1】:

不要替换字符串的其余部分,而是使用re.search() 来搜索产品编号:

In [1]: import re

In [2]: s = "The code for the product is A8H4DKE3SP93W6J and you can buy it here."

In [3]: re.search(r"A[0-9a-zA-Z_]{14}", s).group()
Out[3]: 'A8H4DKE3SP93W6J'

【讨论】:

    【解决方案2】:

    在正则表达式中,您可以在要保留的部分上进行匹配,方法是在模式周围使用大括号,然后在子模式中使用反斜杠后跟该匹配部分的索引来引用它。在下面的代码中,“(A[0-9A-Za-z_]{14})”是您要匹配的部分,您可以使用“\1”替换结果字符串。

    re.sub(r'.*(A[0-9A-Za-z_]{14}).*', r'\1', s)
    

    【讨论】:

      猜你喜欢
      • 2018-12-28
      • 2012-04-14
      • 2012-12-06
      • 1970-01-01
      • 1970-01-01
      • 2016-02-08
      • 2016-07-18
      • 1970-01-01
      相关资源
      最近更新 更多