python 3正则表达式斜杠与Square Brackets

时间:2017-12-27 15:10:31

标签: regex python-3.x

我想在Python 3中找到表情符号,我打印的字符串是\ud83d\ude0a
我可以找到它 re.compile(r'(\\ud83d\\ude0a)')
但是当我想使用Square Brackets找到类似\ud83d[\ude00-\ude4f]的时候 我写这个re.compile(r'(\\ud83d([\\ude00-\\ude4f]))');
但只是在ude0a中映射\ud83d\ude0a

我的整个代码

str = '\\ud83d\\ude0a'
print(str)
emoji_pattern = re.compile(r'(\\ud83d([\\ude00-\\ude4f]))');
# emoji_pattern = re.compile(r'(\\ud83d\\ude0a)');
print(emoji_pattern.sub(r'', str))

1 个答案:

答案 0 :(得分:1)

问题在于您使用方括号的方式 方括号用于从括号中的字符中选择单个字符。因此,当您编写[\\ude00-\\ude4f]时,它将被转换为仅有一个字符(例如,\\ud0等。),而不是你想要的那样,从\ud83d\ude00\ud83d\ude4f

要解决此问题,请尝试使用(\\ud83d(\\ude[0-4][0-9a-f]))。它会找到字符\ud83d\ude的序列,然后在04的范围内找到char,然后在09的序列中找到一个或af。结果,这将检测所需的序列,并且可以检查here