代码之家  ›  专栏  ›  技术社区  ›  St.Antario

在python中禁止代理的regex

  •  0
  • St.Antario  · 技术社区  · 5 年前

    这个问题已经有了答案:

    我正在编写符合以下条件的正则表达式:

    不应指定短标识符小于00a0的字符 除0024($)、0040(@)或0060(–152;)之外,任何一个都不在范围内 D800至DFFF(含)。

    我写了以下正则表达式:

    PATTERN = ([\u0024\u0040\u0060]|(?![\u0000-\u00A0])|(?![\u8000-\udfff]))
    

    使用它进行搜索,如下所示

    str = #some str
    search = re.search(PATTERN, str, re.UNICODE)
    

    让我困惑的是 \u8000 - \udfff 是代孕妈妈

    DEMO 是的。

    但在我的脚本中运行这样的regex似乎工作得很好。使用regex过滤掉这些字符是正确的方法吗?

    1 回复  |  直到 5 年前
        1
  •  1
  •   Skelp    5 年前

    在挖掘了一些之后,我找到了这个答案: https://stackoverflow.com/a/32574077/12167858

    简而言之:这个范围内的字符只是 一点也不 在宽Unicode字符串中,至少在Python3中。regex的执行是有效的,因为没有包含这样的字符。python似乎忽略了这个不合逻辑的命令,继续前进。但正因为如此, regex101 把它标记为一个错误,尽管运行良好。

    回答你的问题:是的,但也不是。它根本做不到任何事。我建议把 \u8000-\udfff 部分。