我在文本文件"file.txt“中有数据
菜谱和菜单 专家意见 配料 假日及事件 社区 视频 夏季烹饪 扁豆糙米汤 1991年1月美食 3.5/4 审查(83) 90% 再来一次 有些汤确实能激发出一种类似于爱的奉献,而这也是 他们。在寒冷的冬天,当美食编辑们思考着什么汤的问题 煮 审查(83) 产量:约14杯,供应6至8杯。 成分 五杯鸡汤 1 1/2杯小扁豆,摘取后洗净 1杯糙米 一罐32到35盎司的西红柿,沥干,保留果汁,然后切碎。 3根胡萝卜,纵切一半,横切成1/4英寸。 1个洋葱,切碎 一柄芹菜,切碎 3个大蒜丁香,切碎 1/2茶匙碎罗勒干 1/2茶匙碎干或干果 1/4茶匙碎百里香 1叶 1/2杯鲜欧芹叶切碎 2汤匙苹果醋,或品尝 制备 在一个很重的水壶里把汤、三杯水、小扁豆、米饭、西红柿和保留的果汁混合在一起,
我想提取成分和制剂之间的数据。
我为它写了以下的正则表达式:-
(?s).*?Ingredients(.*?)Preparation.*但它正在提取第3行斜体成分之间的数据。
file.txt与制备,而配料与制备之间的数据无关
为了解决这个问题,我应该对regex代码做哪些修改?
提前感谢!
发布于 2015-06-10 10:21:26
试着让你的第一个.*贪婪。它会吃掉所有的Ingredients直到Preparation之前的最后一个
(?s).*Ingredients(.*?)Preparation.*发布于 2015-06-10 10:20:59
发布于 2015-06-10 10:19:07
(?s).*?[*]{2}Ingredients[*]{2}(.*?)[*]{2}Preparation[*]{2}.*[*]{2}告诉regex您想要列表中的一个字符(这里是一个*),非常巧妙地是{2}的两倍。
与转义相比,我更喜欢使用字符类,我发现它们比下面这些类更易读:
(?s).*?\*{2}Ingredients\*{2}(.*?)\*{2}Preparation\*{2}.*而且,根据你所使用的语言,你也可能不得不避开反斜杠。
https://stackoverflow.com/questions/30753218
复制相似问题