正则表达式中的贪婪问题


Issues with greediness in regex

在PHP中,我将这里的文本 http://siba.thenetworksolution.it/allegati/H3018500D7FDDE9ACA05671F49F4F3746A69DAF96.1329514.pdf.txt 与以下正则表达式匹配:

preg_match('#(.*(?s))(particella |particelle |p'.|part'.|p |part |mappale |mapp'.|mapp |n'.|'*)'s*('d+['d /'p{Pd}]*)($|.{0,20}(?s)(graffati|particella |particelle |p'.|.*part'.|p |part |mappale |mapp'.|mapp |n'.|subalterno |subalterni |sub'.|s'.|sub |s |'bcat'b|'bcategoria'b|'brendita'b|'bvani'b|'bconsistenza'b|'bR'.C'.'b))#i', $txt, $matches, PREG_OFFSET_CAPTURE, $offset)

offset = 1155(即文本中"foglio"一词的偏移量)。

我希望它们与454匹配(即偏移量之后),但它57/1998匹配(之后的许多行)。

经过对 regex101.com 的一些测试,我发现问题是前缀 particella454 之间的回车符,但我希望's匹配换行符。

我如何纠正贪婪,使正则表达式与454相匹配?

已解决。第二组particella后有一个空间。