首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python regex来获取字符串中的第一个点之前的所有内容

Python regex来获取字符串中的第一个点之前的所有内容
EN

Stack Overflow用户
提问于 2013-10-03 00:32:51
回答 5查看 77.8K关注 0票数 36
代码语言:javascript
复制
find = re.compile("^(.*)\..*")
for l in lines:
    m = re.match(find, l)
    print m.group(1) 

我想对字符串中的任何内容进行正则表达式,直到第一个点。

a@b.c中,我想要a@b

a@b.c.d中,我想要a@b

a@b.c.d.e中,我想要a@b

我的代码带给我的是...

  • a@b.c prints
  • a@b.c.d prints
  • a@b.c.d.e prints a@b a@b.c prints a@b.c.d

应该找到什么才能让它只得到一个@b?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-10-03 00:33:28

默认情况下,所有的量词本质上都是贪婪的。从这个意义上说,他们会尽可能多地使用字符串。您可以通过在它们后面附加一个?来使它们不情愿:

代码语言:javascript
复制
find = re.compile(r"^(.*?)\..*")

正如注释中所指出的,如果字符串中没有句点,则此方法将失败。因此,这取决于您希望它如何运行。但是如果你想在这种情况下获得完整的字符串,那么你可以使用一个被否定的字符类:

代码语言:javascript
复制
find = re.compile(r"^([^.]*).*")

遇到第一个句点后,或在字符串末尾,它将自动停止。

此外,您也不希望在那里使用re.match()re.search()应该没问题。您可以修改代码以:

代码语言:javascript
复制
find = re.compile(r"^[^.]*")

for l in lines:
    print re.search(find, l).group(0)
票数 59
EN

Stack Overflow用户

发布于 2013-10-03 00:39:45

在这种情况下,您可以使用.find()代替正则表达式:

代码语言:javascript
复制
>>> s = "a@b.c"
>>> print(s[0:s.find('.')])
a@b

考虑到注释,下面是使用.index()的一些修改(它类似于.find(),除了它在没有匹配的字符串而不是-1时返回错误):

代码语言:javascript
复制
>>> s = "a@b.c"
>>> try:
...     index = s.index('.')
... except ValueError:
...     index = len(s)
...
>>> print(s[:index])
a@b
票数 39
EN

Stack Overflow用户

发布于 2013-10-03 00:51:53

您可以使用split方法:在.字符处拆分字符串一次,您将得到一个元组(在第一个句点之前,在第一个句点之后)。符号将是:

代码语言:javascript
复制
mystring.split(".", 1)

然后,您可以简单地创建一个生成器,它“生成”您感兴趣的部分,并忽略您不感兴趣的部分( _表示法)。它的工作原理如下:

代码语言:javascript
复制
entries = [
    "a@b.c",
    "a@b.c.d",
    "a@b.c.d.e",
    ]

for token, _ in (entry.split(".", 1) for entry in entries):
    print token

输出:

代码语言:javascript
复制
a@b
a@b
a@b

可以在online中找到split方法的文档

str.split([sep[, maxsplit]])

返回字符串中的单词列表,使用sep作为分隔符字符串。如果给定maxsplit,则至多完成maxsplit拆分(因此,列表将至多包含maxsplit+1元素)。如果未指定maxsplit或-1,则对拆分的数量没有限制(进行所有可能的拆分)。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19142042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档