我想要一个停留在某个字符或行尾的正则表达式。我目前有:
x = re.findall(r'Food: (.*)\|', text)
选择“食物:”和“|”之间的任何内容。为了添加行尾,我尝试了:
x = re.findall(r'Food: (.*)\||$', text)
但如果文字是'食物:很棒',这将会返回空白。如何让这个正则表达式停在“|”还是行尾?
答案 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