Одна вещь, которую вы можете попробовать, - это использовать отрицательный взгляд, чтобы отфильтровать вещи, которые вы не хотите sh включить в ваш матч. Например, соответствие <div
, за которым следует что угодно, а затем еще один <div
, может соответствовать вещам типа <div></div><div>
.
Вместо этого вы можете сказать, что соответствует <div
, за которым следует что угодно - при условии, что это не </div>
- а затем еще один <div
.
<div (?:(?!</div>).)* <div
Затем вы можете вставить этот же подшаблон в любое место вашего выражения, где вы обычно пишете .*
. В этом конкретном случае вы можете повторить это, чтобы убедиться, что вы не нажмете закрывающий div перед тем, как UPC
и , а затем продолжите с частью {{ UPC }}
.
<div(?:(?!</div>).)*<div (?:(?!</div>).)* {{ upc }} .*?</div>\s*</div>
Вот демоверсия