繁体   English   中英

Python Regex匹配特殊字符

[英]Python Regex Match Special Characters

我需要一个可以测试字符串是否包含任何特殊字符的函数。 我目前正在使用以下功能,但是没有运气:

import re

def no_special_characters(s, pat=re.compile('[@_!#$%^&*()<>?/\|}{~:]')):
  if pat.match(s):
    print(s + " has special characters")
  else:
    print(s + " has NO special characters")

我得到以下结果:

no_special_characters('$@')  # $@ has special characters
no_special_characters('a$@') # a$@ has NO special characters
no_special_characters('$@a') # $@a has special characters

这对我来说毫无意义。 如何测试字符串中的任何特殊字符?

这里使用match()问题是它锚定在字符串的开头。 您想在字符串中的任意位置找到一个特殊字符,因此请使用search()

def no_special_characters(s, pat=re.compile('[@_!#$%^&*()<>?/\|}{~:]')):
    if pat.search(s):
        print(s + " has special characters")
    else:
        print(s + " has NO special characters")

您还可以继续将match()与以下正则表达式模式一起使用:

.*[@_!#$%^&*()<>?/\|}{~:].*

使用search功能代替match功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM