包含非英文字符的单词数,标点符号等特殊字符或单词开头或中间的数字

时间:2012-11-10 14:01:45

标签: python regex python-3.x

我需要计算带有非英文字符的单词,标点符号等特殊字符或单词开头或中间的数字。 我尝试用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щовфау'

2 个答案:

答案 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])