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