Python正则表达式正向前瞻
我有下面的正则表达式,用来查找以标点符号结尾的单词序列。前瞻功能确保匹配后有空格和大写字母或数字Python正则表达式正向前瞻,python,regex,Python,Regex,我有下面的正则表达式,用来查找以标点符号结尾的单词序列。前瞻功能确保匹配后有空格和大写字母或数字 pat1 = re.compile(r"\w.+?[?.!](?=\s[A-Z\d])" 以下前瞻功能是什么 pat2 = re.compile(r"\w.+?[?.!](?=\s+[A-Z\d])" Python 3.2是否支持变量前瞻(\s+)?我没有得到任何错误。此外,我看不出这两种模式有什么不同。无论我有多少空格,这两种方法似乎都是一样的。是否有解释说明\s+在前瞻中的用途?不同之处在于
pat1 = re.compile(r"\w.+?[?.!](?=\s[A-Z\d])"
以下前瞻功能是什么
pat2 = re.compile(r"\w.+?[?.!](?=\s+[A-Z\d])"
Python 3.2是否支持变量前瞻(\s+)?我没有得到任何错误。此外,我看不出这两种模式有什么不同。无论我有多少空格,这两种方法似乎都是一样的。是否有解释说明\s+在前瞻中的用途?不同之处在于,第一个前瞻希望在数字或大写字母之前有一个空白字符,而第二个前瞻希望至少有一个空白字符,但尽可能多 +被称为量词。它意味着尽可能多的1到n 重述
\s (Exactly one whitespace character allowed. Will fail without it or with more than one.)
\s+ (At least one but maybe more whitespaces allowed.)
为回答此评论,请考虑:
什么是\w.+?真的匹配吗
一个单字字符[A-zA-Z0-9_],后跟至少一个“any”字符(新行除外),但带有惰性量词+?。因此,在您的情况下,它会留下一个空间,以便以后的前瞻匹配。因此,除一个空格外,您将使用所有空格。这就是为什么你会在你的输出中看到它们。我真的不确定你在这里想要实现什么 以标点符号结尾的单词序列可以与以下内容匹配:
re.findall(r'([\w\s]*[\?\!\.;])', s)
s='Stefano ciao. a domani. a presto;'
向前看需要另一个字符串跟随吗
无论如何:
- \s只需要一个空间李>
- \s+至少需要一个空间
re.findall(r'([\w\s]*[\?\!\.;])(?=\s\w)', s)
或
您可以在以下内容上尝试所有这些功能:
re.findall(r'([\w\s]*[\?\!\.;])', s)
s='Stefano ciao. a domani. a presto;'
根据字符串的不同,前瞻可能是必要的,也可能不是,也可能不会更改为具有“+”多个空格选项 对不起,我的问题搞砸了。你们仍然错过了最后一轮的比赛!您应该发布一些您希望使用的字符串示例,以及如何使用re-moduleThanks FailedDev搜索/匹配/查找它们。当我只使用\s运行正则表达式,并且有多个空格时,\w.+?继续匹配空格,直到大写字母前的最后一个空格。在我的结果中,我得到了一个带有空格的文本,比如:“汽车停在——”,“在车库里”(-表示空格)。如果我在“向前看”中有\s+,则不会捕获多余的空格,我会得到“汽车已停放”、“在车库中”。不管单词之间有多少空格。Python3支持变量前瞻是正确的吗?