簡體   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