我需要计算带有非英文字符的单词,标点符号等特殊字符或单词开头或中间的数字。
我尝试用re
来做,现在好像是
begin_searcher = re.compile(r'[0-9]+[\w\-]')
middle_searcher = re.compile(r'[\w\-]+[0-9]+[\w\-]')
both_searcher = re.compile(r'[0-9]+[\w\-]+[0-9]+[\w\-]')
但它完全错误。知道re
让我更好的任何人,请帮忙。
我需要算上这个:
'asfas1254asffas'
'125safasffa'
'asd!asfg'
'asff#dasf'
'sex!!!!'
'safщовфау'
等
答案 0 :(得分:0)
由于你提到了“非英语”字符,我建议使用regex而不是stock re
,因为后者的unicode支持较弱。除非我误解了这个问题,否则你会找到类似的东西:
regex.match(ur'^\p{L}*[\p{P}\p{Nd}]*\p{L}+$', s) #
其中s
应该是unicode对象。这与u"123щовßß"
和u"щов456ßß"
匹配,并拒绝u"щовßß!!!"
。
答案 1 :(得分:0)
如果有帮助:
def find_alphabetic_words(self, text):
letters = ascii_letters
letters_nd_term = letters + "?!,."
return not any([set(text[:-1]).difference(letters),text[-1] not in letters_nd_term])