为了账号安全,请及时绑定邮箱和手机立即绑定

基于特定模式的 Python 正则表达式匹配

基于特定模式的 Python 正则表达式匹配

慕雪6442864 2021-09-11 20:09:27
匹配字符串,如果只找到特定模式,否则整个字符串应该被拒绝。例如这里是字符串,它应该匹配字符串 if only az,AZ,0-9, :(colon), .(point), ;(分号) ,- (连字符), "(双倒转), (, ) 逗号、[ ] 方括号、( ) 括号、\(反斜杠)存在于该字符串中 & 必须接受该字符串,如下所示,它必须接受 string1string1 = "This is nandakishor's messAGe'\; [to]test(897185) "few(1 -\ 2)" regexs"如果字符串中存在其他诸如 $、%、^、&、@、# 之类的内容,则必须拒绝整个字符串。如下所示,它必须拒绝 string2string2 = "This is nandakishor's messAGe'\; [to]test(89718$#!&*^!5) "few(1 -\ 2)" regexs"
查看完整描述

2 回答

?
慕码人8056858

TA贡献1803条经验 获得超6个赞

这是使用的一种方法 re.sub


前任:


import re


string1 = '''This is nandakishor's messAGe'\; [to]test(897185) "few(1 -\ 2)" regexs'''

string2 = '''This is nandakishor's messAGe'\; [to]test(89718$#!&*^!5) "few(1 -\ 2)" regexs'''


def validateString(strVal):

    return re.sub(r"[^a-zA-Z0-9:;\.,\-\",\[\]\(\)\\\s*\']", "", strVal) == strVal


print(validateString(string1))

print(validateString(string2))

输出:


True

False


查看完整回答
反对 回复 2021-09-11
?
子衿沉夜

TA贡献1828条经验 获得超3个赞

其它的办法:


import re


string1 = '''This is nandakishor's messAGe'\; [to]test(897185) "few(1 -\ 2)" regexs'''

string2 = '''This is nandakishor's messAGe'\; [to]test(89718$#!&*^!5) "few(1 -\ 2)" regexs'''


def validate_string(str_to_validate):

    match_pattern1 = r'[a-zA-Z,():\[\];.\']'

    match_pattern2 = '[$%^&@#]'


    return re.search(match_pattern1, str_to_validate) and not re.search(match_pattern2, str_to_validate)


print(validate_string(string1))

print(validate_string(string2))

输出:


True

False


查看完整回答
反对 回复 2021-09-11
  • 2 回答
  • 0 关注
  • 160 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信