问题描述
我正在努力为我的抓取后端创建一个正则表达式模式。我想创建一系列的日菜单(星期一至星期五)。对于每场比赛(一天),我都希望保留日期和列出的饭菜。到目前为止,我已经创建了:
\d+\.\d+\.\d+([\s\S]*?)(\d+\.\d+\.\d+|X)
我的图案有问题:
- 我无法创建不包含第二天日期的模式
- 在上一场比赛中包括日期时,上述问题导致了问题
- 我不知道如何表达星期五(X atm)字符串的结尾
编辑:这是针对Javascript
Pondělí
31.8.2020
Každý všední den 11:00 - 15:00
Polévka:
0,25l Zeleninová polévka se sMetanou (7,9)
20,-
0,25l Kapustová s klobásou
20,-
1150g Grilovaná kuřecí prsa s citronovým kuskusem se zeleninou (1,9)
109,-
2150g Uzená kýta se sMetanovou omáčkou s křenem,kynutý knedlík (1,3,7)
99,-
3300g Strozzapreti se sýrovou omáčkou,ořechy a kousky kuřecích prs (1,7,8)
109,-
4250g Cizrna na zelenině,curry koření,kokosovém mléce a koriandru s bulgurem s dýňovými semínky (1)
99,-
5250g Hot dog s vídeňskými párky,fazolový salát,hořčicová majonéza,rukola,hranolky (1,10)
119,-
6250g Listový salát s okurkem,rajčetem,barevnou paprikou,do růžova grilovanou vepřovou panenkou,hořčično-medový dresing (10,12)
119,-
Úterý
1.9.2020
Každý všední den 11:00 - 15:00
.
Polévka:
0,25l Bramborový krém s brynzou (7)
20,25l Slepičí vývar s masem,zeleninou a nudlemi (1,-
1150g Kuřecí steak se zeleninou na másle,bramborová kaše (7,9)
99,-
2150g Hovězí tokáň s divokou rýží (12)
109,-
3300g Parmazánové risotto s karamelovou cibulí,kousky vepřové panenky,rukola (7)
109,-
4150g Čočková sekaná s uzeným tofu,bramborová kaše se sójovým mlékem,okurek (1,6,12)
109,-
Středa
2.9.2020
Každý všední den 11:00 - 15:00
.
Polévka:
0,25l Hovězí vývar s masem,25l Krém z dýně,mrkve a červeného kari s kokosovým mlékem
20,-
1150g Burger s vepřovým trhaným masem v BBQ,coleslaw,čedar,10,11,12,13)
129,-
2150g Vepřová líčka na černém pivě a jablkách,šťouchaný brambor (1)
109,-
3300g Orecchiette s krůtím ragú na zelenině a rajčatech se sušenými houbami,parmazán (1,-
4250g Bramborový gratin s dýní,listový salát (3,-
Čtvrtek
3.9.2020
Každý všední den 11:00 - 15:00
.
Polévka:
0,25l Frankfurtská s párkem (7)
20,25l Hráškový krém s mátou (7)
20,-
1150g Vepřová krkovice alla porchetta,šťouchaný brambor se zakysanou sMetanou (7,12)
109,-
2150g Kuřecí nudličky s uzenou paprikou,rajčaty a cizrnou,jasmínová rýže
99,-
3300g Spaghetti „Amatriciana“ (červená cibule,pancetta,tomatová om.,česnek,chilli),7)
109,-
4250g Mexické černé fazole se zeleninou a kukuřicí,tortila,pikantní dip salsa verde (1,-
Pátek
4.9.2020
Každý všední den 11:00 - 15:00
.
Polévka:
0,25l Česneková se zeleninou a kroupami,uzené maso (1,25l Fenyklová
20,-
1150g Smažený sýr se šunkou,vařené brambory,tatarská omáčka (1,12)
99,-
2150g Dušený vepřový plátek s okurkou,vejcem a párkem,jasmínová rýže (3,-
3300g Penne s cuketovou omáčkou se slaninou,sušená rajčata,parmazán,polníček (1,-
4250g Šumavský toč (kynutá bramborová buchta),houbové soté (1,-
提前谢谢!
解决方法
要获取日期,日期和菜单,可以使用3个捕获组:
(\S+)\s+(\d{1,2}\.\d{1,2}\.\d{4}.*)((?:\r?\n(?![^\S\r\n]*\S+\s*\d{1,2}\.{4}).*)*)
模式将匹配
-
(\S+)
捕获第1组,匹配1个以上非空格字符 -
\s+
匹配1个以上的空格字符 -
(
捕获第2组-
\d{1,2}\.\d{4}.*
匹配“日期喜欢”模式
-
-
)
关闭第2组 -
(
捕获第3组-
(?:
非捕获组-
\r?\n
数学换行符 -
(?!
负向超前-
[^\S\r\n]*\S+\s*
匹配0+个空格,没有换行符 -
\d{1,2}\.{4}
-
-
)
提前关闭 -
.*
匹配整行
-
-
)*
关闭组并重复0次以上
-
-
)
关闭第3组