正则表达式匹配GSM字符集

时间:2013-04-07 18:23:32

标签: python regex

这是一个GSM字符集(如下)。我需要确保只包含这些文本 字符将匹配。如果文本包含此范围之外的任何内容,如果不匹配...

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567889@?£_!1$"¥#è
?¤é%ù&ì\ò(Ç)*:Ø+;ÄäøÆ,<LÖlöæ-=ÑñÅß.>ÜüåÉ/§à¡¿' 

这是我试过的......

@£$¥èéùìòÇ\fØø\nÅåΔ_ΦΓΛΩΠΨΣΘΞÆæßÉ !\"#¤%&'()*+,-./[0-9]:;<=>\?¡[A-Z]ÄÖÑܧ¿[a-z]äöñüà\^\{\}\[~\]\|€

我需要一个只匹配以下

的正则表达式
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567889@?£_!1$"¥#è
?¤é%ù&ì\ò(Ç)*:Ø+;ÄäøÆ,<LÖlöæ-=ÑñÅß.>ÜüåÉ/§à¡¿'

如何?感谢。

更新:

 rule = re.compile(r'^[\w@?£!1$"¥#è?¤é%ù&ì\\ò(Ç)*:Ø+;ÄäøÆ,<LÖlöæ\-=ÑñÅß.>ÜüåÉ/§à¡¿\']+$')

    if not rule.search(value):
        msg = u"Invalid characters."
        raise ValidationError(msg)

2 个答案:

答案 0 :(得分:3)

尝试

r'^[\w@?£!1$"¥#è?¤é%ù&ì\\ò(Ç)*:Ø+;ÄäøÆ,<LÖlöæ\-=ÑñÅß.>ÜüåÉ/§à¡¿\']+$'

如果您想匹配包含其他字符的字符串中的上述字符,请删除前导^并尾随$

请注意,上述内容不允许使用空格字符。如果您想要包含它们,只需添加一个空格(或者如果您还要包含换行符,也可以添加\s)。

答案 1 :(得分:1)

不使用正则表达式的替代方法:

>>> valid_chars = set(u'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567889@?£_!1$"¥#è?¤é%ù&ì\ò(Ç)*:Ø+;ÄäøÆ,<LÖlöæ-=ÑñÅß.>ÜüåÉ/§à¡¿\'')
>>> tests = ['hello', u'£_!', u'Ϡ']
>>> [len(set(t).difference(valid_chars)) == 0 for t in tests]
[True, True, False]