[英]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.