如何完全或部分匹配python中的正则表达式

时间:2015-04-04 16:59:24

标签: python regex

这是一个基本问题,但我已经搜索了一下,我仍然怀疑。

让我们以下面的正则表达式为例:

regex_example = re.compile('\d{10}\s\d-\d{3}-\d{3}-\d{4}')

现在让我们假设有一个字符串,其中可能包含与该正则表达式的全长匹配的子字符串,例如' 1234567890 1-123-456-7890' 1234567890 1-123-456-7890'或者它可能只包含与正则表达式的第一部分匹配的子字符串,例如' 1234567890 1-123'。

我想修改正则表达式(或使用其他解决方案),允许我匹配任何具有14个或更多char的子字符串,并部分或完全匹配正则表达式。所以我的代码会找到:

' 1234567890 1-1' (有14个字符,与正则表达式的开头相匹配) 要么 ' 1234567890 1-13' 要么 ' 1234567890 1-134'

等等,直到正则表达式的全长。

1 个答案:

答案 0 :(得分:1)

您可以选择前14个字符后参与:

regex_example = re.compile(
   '(\d{10}\s\d-\d(?:\d{0,2}(?:(?:-\d{0,3})?(?:-\d{0,4})?)?)?)')

RegEx Demo