gpt4 book ai didi

具有 unicode 范围的 Python 正则表达式匹配不在范围内的字符

转载 作者:太空宇宙 更新时间:2023-11-03 18:36:27 24 4
gpt4 key购买 nike

我正在使用正则表达式从文本中删除“项目符号点”。这些要点通常是在 unicode 范围内找到的符号,例如几何形状 (\u25a0-\u25ff) 或类似符号。以下是此类项目符号的示例:

 ◉ This is a bullet ♦︎ This is also a bullet ☉ And so is thisThis is not a bullet.

我使用以下正则表达式来匹配这些要点:


\s*([\u00a4\u00b7]|[\u2010-\u2017]|[\u2020-\u206f]|[\u2300-\u23f3]|[\u25a0-\u25ff]|[\u2600-\u26ff] |[\u2700-\u27bf]|[\u2b00-\u2bff])\s*

这在 Ruby 中有效(请参阅 http://rubular.com/r/O7ZObURmlt 中的示例),但在 Python 中它匹配任何字符串的第一个字符。例如,匹配字符串 This is not aBullet 中的 T 字符。您可以将上述正则表达式和示例文本复制到 http://www.pythonregex.com/亲自看看这个。

正则表达式是使用 UNICODE 标志编译的。

如何让 Python 的正则表达式引擎能够很好地处理这个表达式?

最佳答案

使生成表达式的字符串采用 unicode 格式,以便将序列解释为 unicode 字符,而不是普通的 u20,等等。请尝试以下操作:

regex = re.compile(u"\s*([\u00a4\u00b7]|[\u2010-\u2017]|" + \
"[\u2020-\u206f]|[\u2300-\u23f3]|[\u25a0-\u25ff]|" + \
"[\u2600-\u26ff]|[\u2700-\u27bf]|[\u2b00-\u2bff])\s*", re.UNICODE)

而且您很可能没有使用 Python 3.*,其中所有字符串都是 unicode AFAIK。

关于具有 unicode 范围的 Python 正则表达式匹配不在范围内的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21516335/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com