gpt4 book ai didi

Python正则表达式获取所有内容,直到字符串中的第一个点

转载 作者:IT老高 更新时间:2023-10-28 22:23:31 26 4
gpt4 key购买 nike

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 打印 a@b
  • a@b.c.d 打印 a@b.c
  • a@b.c.d.e 打印 a@b.c.d

应该找到什么以便它只得到 a@b?

最佳答案

默认情况下,所有量词本质上都是贪婪的。从某种意义上说,他们将尝试尽可能多地消耗字符串。你可以通过在他们后面附加一个 ? 来让他们不情愿:

find = re.compile(r"^(.*?)\..*")

如评论中所述,如果您的字符串中没有 句点,则此方法将失败。因此,这取决于您希望它的行为方式。但是如果你想在这种情况下得到完整的字符串,那么你可以使用否定字符类:

find = re.compile(r"^([^.]*).*")

遇到第一个句号,或者字符串的末尾会自动停止。


你也不想使用 re.match()那里。 re.search()应该没问题。您可以将代码修改为:

find = re.compile(r"^[^.]*")

for l in lines:
print re.search(find, l).group(0)

Demo on ideone

关于Python正则表达式获取所有内容,直到字符串中的第一个点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19142042/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com