gpt4 book ai didi

python - 查找所有单词 : Negative Look Behind in Regex

转载 作者:太空宇宙 更新时间:2023-11-04 02:52:32 24 4
gpt4 key购买 nike

我目前正在使用 Python 2.7(我正在使用我的一些旧代码)。我正在尝试通过正则表达式获取所有单词,在这里我可以忽略带有撇号的单词,例如 can'tGary's。到目前为止,我已经将字符串中的所有字母都变成了小写,这是我当前的正则表达式:

r"(?<=\s|^)([a-z]+)(?=\s|$)"

我收到以下错误:

raise error, v # invalid expression

error: look-behind requires fixed-width pattern

我也试过:

r"(?:\s|^)([a-z]+)(?=\s|$)"

但是,正如您在 Regex101 上看到的那样, 它不会捕获最后一个词。

我知道这样做可能有更好的选择,但现在我真的很好奇如何在这种情况下进行负面回顾。但是,如果您能对此进行解释并提供您自己更好的解决方案,那就太好了,我们将不胜感激。

最佳答案

在这种情况下,只需使用相反字符类 \S 的否定后视。 (同样可以用前瞻来完成):

r"(?<!\S)([a-z]+)(?!\S)"

参见 regex demo .

“积极”的方法看起来不那么漂亮:

r"(?:(?<=\s)|^)([a-z]+)(?=\s|$)"

参见 another regex demo . (?:(?<=\s)|^)非捕获组结合了 2 个零宽度断言替代方案,(?<=\s)在当前位置之前需要一个空格,并且 ^ , 匹配字符串的开头。

关于python - 查找所有单词 : Negative Look Behind in Regex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43412596/

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