为什么这个正则表达式没有生效

2024-06-16 14:43:59 发布

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

我正在使用python2.7和scrapy.20

我有这个测试

0552121152, +97143321090

我想得到comma前面的值和后面的值。你知道吗

我的正则表达式是

\s*(.*),前一个

,\s*(.*)后面的那个

在这两方面我都得到了整个测试

为什么?

编辑

对于需要详细信息的用户,请参见:

这是我正在刮的页面http://www.justproperty.com/apartments/old-town/1092713-amazing-2br-apartment-in-the-old-town-island-with-a-burj-khalifa-and-address-hotel-view.html

这是我在shell的cmd中的代码:

    s =sel.xpath("normalize-space(.//span[@class='content_agent']/span[last()]/span[2]/text())")
 s.re(r'\s*(.*),')

我不是问得到这些值的解决方案,而是问为什么我提到的正则表达式不起作用


Tags: 用户comhttp编辑www详细信息页面old
3条回答

试着这样做:

import re

string = "0552121152, +97143321090"
pattern = re.compile(r"\s*(.*),\s*(.*)")

print pattern.search(string).groups()

结果:

('0552121152', '+97143321090')
[Finished in 0.3s]

唯一的区别可能是因为我使用了.groups()方法,这就是我得到它的原因。如果您可以在您的终端上重现这一点,那么错误的不是您的正则表达式,而是您的编码风格。你知道吗

除此之外,我根本看不出正则表达式是如何失败的。你知道吗

类似这样的内容将把逗号前面的部分存储在\1中,而逗号后面的部分存储在\2

/(\s?[\d]+)(?:[, ]+)([+\d]+)/

这将查找后跟一些数字的可选空白字符数。然后查找空格或逗号(或两者都有),后跟由数字字符类和/或加号组成的另一个字符串。你知道吗

因为.也匹配,,这是一个贪婪的选择。使用更具体的符号,如[^,]\d,而不是.符号。你知道吗

相关问题 更多 >