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

标签 python regex

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/

相关文章:

python - 为 QUuid 类制作 GDB 调试助手

java - 查找并替换以新字符串开头和结尾的子字符串 java

c++ - 正则表达式匹配数字的重复模式,后跟任何类型的定界符?

python - 在 Python 中将单行字符串转换为整数数组

python - tf.contrib.learn 快速入门中出现错误,没有名为 load_csv 的属性

python - 使用正则表达式匹配 python 中文件的开头和结尾

java - 验证文件java

javascript - 从 JSON 对象中删除空括号

python - wxPython:如何将一个面板放在另一个面板上

python - PyQt: "AttributeError: ' PlayerWindow'对象没有属性 'exec_'“打开第二个窗口时