Skip to main content
 首页 » 编程设计

python之如何编写此正则表达式来匹配整个字符串

2025年05月04日16mayingbao

我有一个字符串,由 3 个下划线分隔的小写字符组成。这些都是有效的例子:

abc 
abc_def 
abc_def_ghi 

这些不是:

abc_ 
abc_ab 
abc_123 

我写了一个正则表达式:

>>> def test_string(test): 
...    import re 
...    pc = re.compile("[a-z]{3}(_[a-z]{3})*") 
...    if pc.match(test): 
...        return True 
...    else: 
...        return False 
... 
>>> print test_string('abc') 
True    # Okay 
>>> print test_string('ab') 
False   # Okay 
>>> print test_string('abc_') 
True    # Not Okay  

但不排除我不想要的情况。

我如何编写一个函数来测试字符串是我想要的形式,而不是我不想要的形式?

请您参考如下方法:

您只需要在您的正则表达式中添加行尾 anchor $:

re.compile("[a-z]{3}(_[a-z]{3})*$") 

这确保匹配的内容匹配后没有其他内容。

您不需要行首 anchor (^),因为默认情况下 match 会尝试匹配字符串的开头。