python中的正则表达式。如何简化我的例子?

时间:2015-04-14 17:27:38

标签: python regex

我是Python编程的新手。现在,我正在努力简化现有代码。以下是练习:开发一种格式与(xxx) xxx-xx-xxxxx-xxx-xx-xx格式的电话号码相匹配的模式。到目前为止,我提出了什么:

patt = "\(?\d{3}\)?\s?-?\d{3}-\d{2}-\d{2}"

完美无缺。但问题很明显:如果我有某个固定模式之前的可选模式,比如"(specific-patter-ffddff445%$#%)--ds",我将不得不放置"?"在可选模式中的每个符号之前的符号。如何组合所有符号并只放一个"?"标记

1 个答案:

答案 0 :(得分:1)

所以你所拥有的是各种不正确的格式。例如:

  

012)345-67-89
  (012 345-67-89

您想要的是一个选项,正则表达式为您提供:https://docs.python.org/3.4/library/re.html#regular-expression-syntax

这样的事情会更好:

patt = '(?:\(\d{3}\) |\d{3}-)\d{3}-\d{2}-\d{2}'

这将匹配 "(xxx)"或" xxx - "作为" xxx-xx-xx"的前缀。并且不会匹配上面列出的任何错误字符串。

?只应在其操作内容真正可选的情况下使用。