我正在尝试在第二级下的以下文本中解析“餐饮:”后面的数字。所以应该返回'666'。
MAIN LEVEL
Entrance: 11
Dining: 33
SECOND LEVEL
Entrance: 4444
Living: 5555
Dining: 666
THIRD LEVEL
Dining: 999
Kitchen: 000
Family: 33332
如果我使用类似的东西,(?:\bDining:\s)(.*\b)
它会捕获 MAIN 下的第一次出现。因此,我试图SECOND LEVEL
在正则表达式中指定,然后是重复模式:新行、多个空格,然后Dining:
是任何文本,直到找到为止。这个演示说明了我遇到的两个问题。使用的正则表达式是:(?:\bSECOND\sLEVEL(\n\s+.*)*Dining:)(.*\b)
- 在您删除最后一行包含
Laundry: 1
. 这是由于比赛太多还是其他原因造成的? - 删除该行后,正则表达式仅捕获 .. 下的最后一个匹配项,
OTHER LEVEL
返回 '2' 而不是 .. 下的匹配项SECOND LEVEL
。
有时Dining:
将不存在SECOND LEVEL
,因此不应返回任何内容。
什么是只捕获SECOND LEVEL
'Dining:
号的正则表达式,如果它不存在则不返回任何内容?首选正则表达式,如果可能,不要在 Java 中循环。谢谢