Python 正则表达式匹配冒号前的字符串直到空格

Python 正则表达式匹配冒号前的字符串直到空格,python,regex,Python,Regex,我有一个文本文件中的示例字符串。我想找到冒号之前的所有单词,直到空格。 我编写了如下代码: import re text = 'From: mathew <mathew@mantis.co.uk>\nSubject: Alt.Atheism FAQ: Atheist Resources\n\nArchive- name: atheism/resources\nAlt-atheism-archive-name:' email_data = re.findall("[^\s].*(?=

我有一个文本文件中的示例字符串。我想找到冒号之前的所有单词,直到空格。 我编写了如下代码:

import re
text = 'From: mathew <mathew@mantis.co.uk>\nSubject: Alt.Atheism FAQ: Atheist Resources\n\nArchive- 
name: atheism/resources\nAlt-atheism-archive-name:'
email_data = re.findall("[^\s].*(?=:)", text)
print(email_data)
期望输出:

['From', 'Subject', 'FAQ', 'Archive-name', 'Alt-atheism-archive-name']
由于使用了(*),代码在换行符之前一直拾取数据。我想把它限制为空白,所以我放了[^\s],但它不起作用。我能做些什么呢?

您可以使用

email_data = re.findall(r"\S[^:\s]+(?=:)", text) 
请参阅和

详细信息

  • \S
    -非空白字符
  • [^:\s]+
    -1+除
    和空格以外的字符
  • (?=:)
    -右边必须有一个
    字符(该字符未被使用,也未添加到匹配值中)

re.IGNORECASE
标记与regex模式一起使用

\b[a-z-]+(?=:(?:\s|$))


我下面的回答有用吗?请让我知道。
\b[a-z-]+(?=:(?:\s|$))