我正在使用python 2.7 with scrapy .20
我有这个测试
0552121152,+ 97143321090
我希望得到comma
之前的值及其之后的值。
我的正则表达式是
\s*(.*),
之前的那个
和,\s*(.*)
为
在两种方式中我都进行了整体测试。
为什么请?
谁需要详细信息,请点击:
这是我在shell中的cmd中的scrapy代码:
s =sel.xpath("normalize-space(.//span[@class='content_agent']/span[last()]/span[2]/text())")
s.re(r'\s*(.*),')
我不是在询问获取这些值的解决方案,我问的是为什么我提到的 - 正则表达式无法正常工作
答案 0 :(得分: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)
这是因为.
也匹配,
而且它是一个贪婪的选择。使用更具体的内容,例如[^,]
或\d
代替.
符号。
答案 2 :(得分:0)
这样的内容会将部分存储在\1
中的逗号之前,以及\2
中逗号之后的部分
/(\s?[\d]+)(?:[, ]+)([+\d]+)/
这会查找可选数量的空白字符,后跟一些数字。然后它会查找空格或逗号(或两者),后跟另一个由数字字符类和/或加号组成的字符串。