我是Python編程新手。現在我正在努力簡化現有的代碼。以下是練習:制定一個格式,該格式與(xxx) xxx-xx-xx
和xxx-xxx-xx-xx
格式的電話號碼相匹配。我到目前爲止:Python中的正則表達式。如何簡化我的例子?
patt = "\(?\d{3}\)?\s?-?\d{3}-\d{2}-\d{2}"
它完美的作品。但問題是顯而易見的:如果我有一個可選模式,比如說,在某種固定模式之前有"(specific-patter-ffddff445%$#%)--ds"
,那麼我將不得不放置「?」在可選模式中的每個符號之前的符號。我怎樣才能把所有的符號組合起來,只放一個「?」標記?
你的問題還不清楚。這是一個練習還是一個真正的問題?如果是後者,請刪除字符串中的所有非數字字符,並檢查是否留下了10位數字。這應該涵蓋所有特殊用例。 – alfasin
我不確定我是否理解。你可以使用一個組來使一個子模式可選:'(?:xyz)?'使得整個字符串'xyz'是可選的。但是如果你想說每個字符都是可選的而不依賴於其他字符,你必須寫'x?y?z?'。沒有捷徑。 – Barmar