匹配到特定的单词...

问题描述 投票:2回答:1

不能为我的生活搞清楚这一点......

我正在解析一个食谱:

Steak and Eggs
Serves 1
150g potatoes, diced
2 tsp olive oil
½ white onion, peeled and chopped
Salt and pepper
200g sirloin steak or rump steak, trimmed of fat
2 large eggs
Reduced carb meal
Family friendly 

这是我的reg ex的第一部分,它与标题和服务号码相匹配:

(\D*\n*)(?:\nServes )(\d\n)

我想在最后点击类别时停止匹配。我已经解决了这些可能包含'减少''家庭''快速'等。

然后我尝试这样做:

/(\D*\n*)(?:\nServes )(\d\n)((.*\n)*)(?:Carb|Reduced|Quick|Family)/

但是,如果有两个标签,如示例中所示,将包括“减少碳水化合物餐”,因为Reg Ex一直持续到“家庭”行。

任何帮助将不胜感激,因为我已经在这2小时!

regex
1个回答
2
投票

您只需将非捕获组更改为负向前瞻,如下所示:

/(\D*\n*)(?:\nServes )(\d\n)(.*(?:\n(?!Carb|Reduced|Quick|Family).*)*)/

根据@bobble泡泡的建议编辑,给他信用!

© www.soinside.com 2019 - 2024. All rights reserved.