Pan*_*ank 1 python regex python-3.x
如果名称有效,我想返回 true。名称可以包含:
例如。
John Smith= 真John= 真JoHn= 真John Sm1th=假John $mith=假J0hn=假John Smith= false(名称之间有两个空格)到目前为止,这是我的代码。其中一些测试用例失败了。
import re
if re.findall('[A-Za-z]{2,25}\s[A-Za-z]{2,25}', string):
print("true")
else:
print("false")
Run Code Online (Sandbox Code Playgroud)
要匹配一个或两个单词,您需要将名字或姓氏设为可选,还需要锚点以确保它不是部分匹配或使用re.fullmatch而不是re.findall:
lst = ['John Smith', 'John', 'JoHn', 'John Sm1th', 'John $mith', 'J0hn', 'John Smith']
import re
[re.fullmatch('[A-Za-z]{2,25}( [A-Za-z]{2,25})?', x) for x in lst]
# [<_sre.SRE_Match object; span=(0, 10), match='John Smith'>, <_sre.SRE_Match object; span=(0, 4), match='John'>, <_sre.SRE_Match object; span=(0, 4), match='JoHn'>, None, None, None, None]
Run Code Online (Sandbox Code Playgroud)
将结果转换为布尔值:
[bool(re.fullmatch('[A-Za-z]{2,25}( [A-Za-z]{2,25})?', x)) for x in lst]
# [True, True, True, False, False, False, False]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14095 次 |
| 最近记录: |