![](/img/trans.png)
[英]How to simplify my working Python3 regex and make it more Pythonic
[英]Regex in python. How to simplify my example?
我是Python編程的新手。 現在,我正在努力簡化現有代碼。 這是練習:開發一種模式,該模式將與(xxx) xxx-xx-xx
和xxx-xxx-xx-xx
格式的電話號碼匹配。 到目前為止,我想出了什么:
patt = "\(?\d{3}\)?\s?-?\d{3}-\d{2}-\d{2}"
它運作完美。 但是問題很明顯:如果我有一個可選模式,在某種固定模式之前說"(specific-patter-ffddff445%$#%)--ds"
,我將必須輸入“?” 可選模式中每個符號之前的符號。 如何合並所有符號並僅輸入一個“?” 標記?
因此,您所擁有的與各種錯誤格式都匹配。 例如:
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”。 並且不會與上面列出的任何錯誤字符串匹配。
?
僅應在其操作確實是可選的情況下使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.