正则式匹配
pattern = re.compile(r"^\$(\d+\.?\d*)$")
if pattern.match(w):
匹配以$开头用^ \ $
,以数字结尾用$
,其中整数部分可以有1个或多个数字用\d+
,小数点0个或1个用.?
,小数部分0个或者多个用\d*
6095. 强密码检验器 II
至少包含 一个特殊字符 。特殊字符为:"!@#$%^&*()-+" 中的一个。使用\W
,这个是re模块自带的
class Solution:
def strongPasswordCheckerII(self, password: str) -> bool:
if len(password) < 8: return False
for i in range(1, len(password)):
if password[i] == password[i - 1]:
return False
pattern1 = re.search(r"\d",password) # <re.Match object; span=(7, 8), match='3'>
pattern2 = re.search(r"[a-z]",password) # <re.Match object; span=(1, 2), match='l'>
pattern3 = re.search(r"[A-Z]",password) # <re.Match object; span=(0, 1), match='I'>
pattern4 = re.search(r"\W",password) # <re.Match object; span=(13, 14), match='!'>
# print(pattern2)
if pattern1 and pattern2 and pattern3 and pattern4:
return True
else:
return False
匹配并替换:
score=re.sub("\d/","X",score)
score = re.sub("-", '0', score)
一个方便显示匹配的网站:
https://regex101.com/
1.将两个及以上的换行符换成一个,两个换行符中间可能有\r等不可见字符
content = re.sub(r'(\s*\n\s*){2,}', '\n', content)
2.两个$符号间的文本包含了换行符\n,默认情况下.将不会匹配这些换行符,导致匹配结果不完整或匹配失败。为了使.匹配换行符,需要使用re.DOTALL或re.S标志,这样.就能匹配任意字符,包括换行符了。
content = re.search(r'\$(.*?)\$', value, re.DOTALL).group(1)
参考资料:
使用Python验证常见的50个正则表达式
保龄球计分
python 正则表达式匹配结果如何输出
如何用python正则表达式匹配字符串?