Regex 匹配到特定的单词。。。
我一辈子都搞不懂这个 我正在分析一个配方:Regex 匹配到特定的单词。。。,regex,Regex,我一辈子都搞不懂这个 我正在分析一个配方: 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的第一部分,与标题
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个小时了 您只需将非捕获组更改为负前瞻,如下所示:
/(\D*\n*)(?:\nServes )(\d\n)(.*(?:\n(?!Carb|Reduced|Quick|Family).*)*)/
根据@bobble bubble的建议编辑,给他荣誉 尝试将
(.*\n)*
设置为惰性,并对不包含停止词的情况使用前瞻。@bobblebubble这是可行的,但我建议为前瞻中的词添加单词边界,以避免任何可能的混淆。此外,我的演示中不需要前瞻,因为已经使用了捕获组。不过,我更喜欢@PoulBak的想法,因为它不需要食谱以()结尾。谢谢@bobblebble和Poul。