Python正则表达式,用于字符串或行尾

时间:2016-01-26 19:05:45

标签: python regex

我想要一个停留在某个字符或行尾的正则表达式。我目前有:

x = re.findall(r'Food: (.*)\|', text)

选择“食物:”和“|”之间的任何内容。为了添加行尾,我尝试了:

x = re.findall(r'Food: (.*)\||$', text)

但如果文字是'食物:很棒',这将会返回空白。如何让这个正则表达式停在“|”还是行尾?

2 个答案:

答案 0 :(得分:4)

您可以使用基于否定的正则表达式[^|]*,这意味着除了pipe之外的所有内容:

>>> re.findall(r'Food: ([^|]*)', 'Food: is great|foo')
['is great']
>>> re.findall(r'Food: ([^|]*)', 'Food: is great')
['is great']

答案 1 :(得分:0)

更简单的替代解决方案:

def text_selector(string)
    remove_pipe = string.split('|')[0]
    remove_food_prefix = remove_pipe.split(':')[1].strip()
    return remove_food_prefix