我一生无法解决这个问题...
我正在解析食谱:
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
这是我的正则表达式的第一部分,它与标题和服务编号相匹配:
(\D*\n*)(?:\nServes )(\d\n)
当结尾处出现类别时,我想停止匹配。我已经计算出其中可能包含“减少”,“家庭”,“快速”等。
然后我尝试这样做:
/(\D*\n*)(?:\nServes )(\d\n)((.*\n)*)(?:Carb|Reduced|Quick|Family)/
但是,如果有两个标签(例如在示例中),则Reg Reg继续到“ Family”(家庭)行将包括“ Reduced Carb餐”。
在此工作2个小时以来,我们将不胜感激!
答案 0 :(得分:2)
您只需要将非捕获组更改为负前瞻,如下所示:
/(\D*\n*)(?:\nServes )(\d\n)(.*(?:\n(?!Carb|Reduced|Quick|Family).*)*)/
根据@bobble bubble的建议进行编辑,请给他功劳!