gpt4 book ai didi

Python正则表达式正向展望

转载 作者:太空宇宙 更新时间:2023-11-03 15:25:19 31 4
gpt4 key购买 nike

我有以下正则表达式,可以找到以标点符号结尾的单词序列。前瞻功能确保匹配后有一个空格和一个大写字母或数字。

pat1 = re.compile(r"\w.+?[?.!](?=\s[A-Z\d])"

下面的lookahead的作用是什么?

pat2 = re.compile(r"\w.+?[?.!](?=\s+[A-Z\d])"

Python 3.2 是否支持变量先行 (\s+)?我没有收到任何错误。此外,我看不出这两种模式有任何差异。不管我有多少空白,两者似乎都一样。是否有对前瞻中\s+ 目的的解释?

最佳答案

我不太确定你想在这里实现什么。

以标点符号结尾的单词序列可以匹配如下内容:

re.findall(r'([\w\s]*[\?\!\.;])', s)

前瞻需要另一个字符串跟随?

无论如何:

  • \s 需要一个并且只有一个 空间;
  • \s+ 需要至少 一个空格。

是的,即使在 python 2.x 中,lookahead 也接受“+”修饰符

与之前相同,但具有前瞻性:

re.findall(r'([\w\s]*[\?\!\.;])(?=\s\w)', s)

re.findall(r'([\w\s]*[\?\!\.;])(?=\s+\w)', s)

你可以在类似的东西上尝试它们:

s='Stefano ciao.   a domani. a presto;'

根据您的字符串,前瞻可能是必需的,也可能不是,并且可能会或可能不会更改为具有“+”多个空格选项。

关于Python正则表达式正向展望,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8069349/

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