2

我需要计算包含非英文字符、标点符号等特殊字符或单词开头或中间的数字的单词。我试图用它来做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щовфау'

ETC

4

2 回答 2

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])
于 2012-12-04T19:53:51.023 回答
0

由于您提到了“非英语”字符,我建议使用regex而不是 stock re,因为后者对 unicode 的支持较弱。除非我误解了这个问题,否则您正在寻找类似的东西:

regex.match(ur'^\p{L}*[\p{P}\p{Nd}]*\p{L}+$', s) #

wheres应该是一个 unicode 对象。这匹配u"123щовßß"u"щов456ßß"拒绝u"щовßß!!!"

于 2012-11-10T14:25:11.567 回答