python - Python中组的反向正则表达式匹配

标签 python regex

我看到很多措辞相似的问题,但是我很难想出这个语法。
给定一个单词列表,我想打印所有没有特殊字符的单词。
我有一个正则表达式,可以识别带有特殊字符的单词 \w*[\u00C0-\u01DA']\w* .我已经看到了很多类似 simple word 等相当简单的场景的答案。 .但是,我找不到任何否定组的内容 - 我已经看到了几组不同的语法来包含否定前瞻 ?! ,但我一直无法想出一种适用于它的语法。
在我的情况下,给出一个字符串,如:“应该打印 nŌt thìs”
应该打印 shouldprint但不是其他两个词。 re.findall("(\w*[\u00C0-\u01DA']\w*)", paragraph.text)给你特殊字符 - 我只是想反转它。

最佳答案

对于这种特殊情况,您只需在搜索中指定常规字母范围:

a = "should print nŌt thìs"
re.findall(r"(\b[A-Za-z]+\b)", a)
# ['should', 'print']
当然,您也可以添加数字或其他任何您想要匹配的内容。
至于负前瞻,它们使用语法 (?!...) , 与 ?之前 ! ,并且它们必须在括号中。要在此处使用,您可以使用:
r"\b(?!\w*[À-ǚ])\w*"
这个:
  • 检查单词边界 \b ,如空格或输入字符串的开头。
  • 如果找到任何以 0 个或多个单词字符开头的特殊字符,则执行否定前瞻并停止匹配。您必须包含 \w*因为 (?![À-ǚ])只会检查特殊字符是否是单词中的第一个字母。
  • 最后,如果它通过前瞻,它匹配任何单词字符。

  • Demo .请注意,在 regex101.com 中,您必须为 \b 指定 Python 风格使用特殊字符正常工作。
    还有第三种选择:
    r"\b[^À-ǚ\s]*\b"
    
    中间部分[^À-ǚ\s]*表示无限次匹配除特殊字符或空格以外的任何字符。

    关于python - Python中组的反向正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62827186/

    相关文章:

    python - Numpy,多维数组上的点积

    python - 如何使用Tesseract-OCR将图片中的文本提取到Excel工作表

    python - 为什么 SQLite Blob 类型在 pandas Python 中自动转换为 unicode 序列

    python - 正则表达式查找不起作用的空格

    java - 正则表达式查找任何字符串的单词中的最后一个字母

    javascript - 正则表达式要求的格式

    python - xgboost 预测对概率的贡献

    python - 无法在 GAE 的 python 中导入正确的模块

    regex - 替换为条件 DTE

    一段的Python正则表达式