在Python regex中,一个与正向前瞻断言匹配的whitesape如何出现在最终匹配的字符串中?

2024-06-30 16:36:52 发布

您现在位置:Python中文网/ 问答频道 /正文

为了回答this question,我创建了这个Python正则表达式,以匹配任何egg子字符串,后跟一个不属于前面带有http://的URL的数字:

>>> r = re.compile('(?:\s(?!http://\S*))egg\d')

然后我将其应用于以下字符串:

>>> a = "a egg1 http://egg2.com egg3 http://www.egg4.org egg5"

结果是:

>>> r.findall(a)
[' egg1', ' egg3', ' egg5']

正则表达式对于很多其他问题都是不正确的,但是还有一个问题:为什么结果中会出现空格?既然我使用了像(?:\s...)这样的先行断言,那么它不应该从结果字符串中去掉吗?你知道吗


Tags: 字符串recomhttpurleggwww数字
2条回答

(?:不是一个前瞻组,而是一个非捕获组。因此,它不会创建自己的捕获,但它是完整匹配的一部分。你知道吗

(?:...)不是一个前瞻性断言,它只是一个非捕获的paren对(即,内部子regex匹配的内容不会进入它自己的组,它只存在于优先级中)。(?=...)是一个先行断言。你知道吗

相关问题 更多 >