我需要一个正则表达式,只接受带有重音符号的字符。目前我正在使用以下表达式:
[ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöœøùúûüýþÿ]*$
有没有其他比我表达更清晰的说法?
我需要一个正则表达式,只接受带有重音符号的字符。目前我正在使用以下表达式:
[ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöœøùúûüýþÿ]*$
有没有其他比我表达更清晰的说法?
accent_chars = '[ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöœøùúûüýþÿ]'
my_regex = '^...%s*...$' % accent_chars
你也可以使用这些范围:
[œÀ-ÖØ-öø-ÿ]
使用Python 3进行演示:
>>> import re
>>> s = 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöœøùúûüýþÿ'
>>> ''.join(re.findall('[œÀ-ÖØ-öø-ÿ]', s))
'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöœøùúûüýþÿ'
>>> len(''.join(re.findall('[œÀ-ÖØ-öø-ÿ]', s))) == len(s)
True
À
和255个字符ÿ
之间,除了œ
,你能否像向前查找并检查它们不包含你不想要的范围内的任何字符一样做些什么?我不确定相比于你的方法是否有所改善,但它更短,也许,只是也许,更清晰。(?![÷×])[À-ÿœ]
(?![÷×])
吗?或者加上 [œÀ-ÖØ-öø-ÿ]
也不错的想法 :) - Jonny 5我认为这会解决你的问题:
[œÀ-ÖØ-öø-ÿ]*$
^
锚点(这样就不只匹配字符串的结尾),并且使用+
而不是*
,除非你想匹配空字符串。 - Mr. Llama$
锚点。但一定要将*
更改为+
。 - Alan Moore