[SOLVED] Проблема с регуляркой (не корректно ищет самое короткое совпадение)

chazzzzz

Client
Регистрация
08.07.2017
Сообщения
63
Благодарностей
9
Баллы
8
Есть такой кусок кода. В нем есть набор символов bsafdasfsdfsdhfghfdghdfhg, которое в тексте встречается только один раз на который я ориентируюсь как на то что идет после искомого текста. И есть <div class=" это то что перед искомым текстом и я ставлю чекбокс на самом коротком совпадении. При это почему-то все равно ищет не самое короткое совпадение. Выпаршивал 4 регулярками по очереди, но хотелось бы узнать как это сделать в одно действие. Экранировать вроде бы нечего, не могу понять в чем проблема.

Код:
<div id="zp_fr_hl_top_hl" style="visiblity:hidden"></div><div id="zp_fr_hl_left_hl" style="visiblity:hidden"></div><div id="zp_fr_hl_right_hl" style="visiblity:hidden"></div><div id="zp_fr_hl_bottom_hl" style="visiblity:hidden"></div><font id="zp_fr_hl_label" style="visiblity:hidden"></font><div id="zp_fr_if_top_hl" style="visiblity:hidden"></div><div id="zp_fr_if_left_hl" style="visiblity:hidden"></div><div id="zp_fr_if_right_hl" style="visiblity:hidden"></div><div id="zp_fr_if_bottom_hl" style="visiblity:hidden"></div><font id="zp_fr_if_label" style="visiblity:hidden"></font><div id="zp_fr_is_top_hl" style="visiblity:hidden"></div><div id="zp_fr_is_left_hl" style="visiblity:hidden"></div><div id="zp_fr_is_right_hl" style="visiblity:hidden"></div><div id="zp_fr_is_bottom_hl" style="visiblity:hidden"></div><font id="zp_fr_is_label" style="visiblity:hidden"></font><script async="" src="//radar.cedexis.com/1/14290/radar.js"></script><script async="" src="//radar.cedexis.com/1/14290/radar.js"></script><script async="" src="//radar.cedexis.com/1/14290/radar.js"></script><script async="" src="//radar.cedexis.com/1/14290/radar.js"></script><script async="" src="//radar.cedexis.com/1/14290/radar.js"></script><script async="" src="//radar.cedexis.com/1/14290/radar.js"></script><script async="" src="//radar.cedexis.com/1/14290/radar.js"></script><div></div><div></div><div class="ReactModalPortal"><div data-reactroot="" class="ReactModal__Overlay ReactModal__Overlay--after-open"><div class="ReactModal__Content ReactModal__Content--after-open dangerouslyDisableFocusStyle Module ReactModal__Content inModal modalHasClose" tabindex="-1"><div class="_0 _3j _2n _2f" style="height: 660px; width: 660px;"><div class="_0 _3j _2n _2 _29 _2f _56 _5f" style="height: 100%; width: 100%;"><div class="_0 _3j _2n _2 _2f _2w _36" style="width: 50%;"><div class="_0 _3j _2n _2 _2w _i"><div class="_0 _3j _2n _8t" style="width: 216px;"><div class="_0 _3j _2n _29 _56" style="max-height: 335px;"><div class="_0 _3j _2n _2f" style="background-color: transparent; padding-bottom: 100%;"><img alt="" class="_mj _25 _3x _2h" src="https://d1w7fb2mkkr3kw.cloudfront.net/assets/images/book/lrg/9781/8784/9781878424310" /></div></div><div id="PinPanePinMeta" class="_0 _3j _2n _6n _6w"><div><div class="_0 _3j _2n _a"><div class="_0 _3j _2n" style="width: 100%;"><div class="_xu _3j _y4 _n6 _xw _53 _xv _3x" role="button" tabindex="0"><div class="_0 _3j _2n _2 _37 _6i _6k"><div class="_0 _3j _2n _6m"><div class="_sz _sy _t0 _sr _5i _ss _sw _nq _nr _ns _nt">Tell us about this Pin...</div></div><div class="_0 _3j _2n _6m"><svg xmlns="http://www.w3.org/2000/svg" class="_mh _5i _mi _25" height="16" width="16" viewBox="0 0 24 24" aria-label="Edit description" role="img"><title>Edit description</title><path d="M13.39,6.02 L17.98,10.61 L7.10,21.50 L1.00,23.00 L2.50,16.90 L13.39,6.02 Z M22.05,1.95 C23.32,3.22 23.32,5.28 22.05,6.55 L19.75,8.85 L15.15,4.25 L17.45,1.95 C18.72,0.68 20.78,0.68 22.05,1.95 Z"/></svg></div></div></div></div></div></div></div></div></div></div><div class="_0 _3j _2n _2" style="width: 330px; border-left: 1px solid rgb(245, 245, 245);"><div class="_0 _3j _2n _2 _i" style="width: 100%;"><div class="_0 _3j _2n _2 _37 _3g _6x _6y _70 _h"><div class="_0 _3j _2n _56 _75 _76"><div class="_sz _sy _t0 _sr _5k _ss _sw _o2 _o3 _o4 _o5">Choose board</div></div><button aria-label="Cancel" class="_vm _25 _5b _jw _n6" type="button"><div class="_vn _54 _2o _2w _36 _vp _6a" style="height: 32px; width: 32px;"><div class="_0 _3j _2n _54"><svg xmlns="http://www.w3.org/2000/svg" class="_mh _5i _mi _25" height="16" width="16" viewBox="0 0 24 24" aria-hidden="true" aria-label="" role="img"><title/><path d="M15.18,12.00 L22.34,4.84 C23.22,3.96 23.22,2.54 22.34,1.66 C21.46,0.78 20.04,0.78 19.16,1.66 L12.00,8.82 L4.84,1.66 C3.96,0.78 2.54,0.78 1.66,1.66 C0.78,2.54 0.78,3.96 1.66,4.84 L8.82,12.00 L1.66,19.16 C0.78,20.04 0.78,21.46 1.66,22.34 C2.10,22.78 2.67,23.00 3.25,23.00 C3.83,23.00 4.40,22.78 4.84,22.34 L12.00,15.18 L19.16,22.34 C19.60,22.78 20.17,23.00 20.75,23.00 C21.33,23.00 21.90,22.78 22.34,22.34 C23.22,21.46 23.22,20.04 22.34,19.16 L15.18,12.00 Z"/></svg></div></div></button></div><div class="_0 _3j _2n _2 _2d _3f _i" style="min-height: 0px; height: 100%; z-index: 0;"><div class="_0 _3j _2n _2d"><div class="_0 _3j _2n"><div><div class="_xu _3j _y4 _n6 _xy _56" role="button" tabindex="0"><div class="_0 _3j _2n _2 _2w _5h _6v _80"><div class="_0 _3j _2n _29 _3g _56 _5h _6o" style="height: 36px; width: 36px;"><div aria-label="bsafdasfsdfsdhfghfdghdfhg" class="_mm _mk _2f" role="img" style="background-color: transparent; background-image: url(&quot;https://d1w7fb2mkkr3kw.cloudfront.net/assets/images/book/lrg/9781/8784/9781878424310&quot;);"></div></div><div class="_0 _3j _2n _2 _2w _37 _3f"><div class="_sz _sy _t0 _sr _5k _ss _sw _nu _nv _nw _nx _sx">bsafdasfsdfsdhfghfdghdfhg</div><div data-test-id="BoardPickerSaveButton" class="_0 _
 

Вложения

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 516
Благодарностей
8 703
Баллы
113
Есть такой кусок кода. В нем есть набор символов bsafdasfsdfsdhfghfdghdfhg, которое в тексте встречается только один раз на который я ориентируюсь как на то что идет после искомого текста. И есть <div class=" это то что перед искомым текстом и я ставлю чекбокс на самом коротком совпадении. При это почему-то все равно ищет не самое короткое совпадение. Выпаршивал 4 регулярками по очереди, но хотелось бы узнать как это сделать в одно действие. Экранировать вроде бы нечего, не могу понять в чем проблема.

Код:
<div id="zp_fr_hl_top_hl" style="visiblity:hidden"></div><div id="zp_fr_hl_left_hl" style="visiblity:hidden"></div><div id="zp_fr_hl_right_hl" style="visiblity:hidden"></div><div id="zp_fr_hl_bottom_hl" style="visiblity:hidden"></div><font id="zp_fr_hl_label" style="visiblity:hidden"></font><div id="zp_fr_if_top_hl" style="visiblity:hidden"></div><div id="zp_fr_if_left_hl" style="visiblity:hidden"></div><div id="zp_fr_if_right_hl" style="visiblity:hidden"></div><div id="zp_fr_if_bottom_hl" style="visiblity:hidden"></div><font id="zp_fr_if_label" style="visiblity:hidden"></font><div id="zp_fr_is_top_hl" style="visiblity:hidden"></div><div id="zp_fr_is_left_hl" style="visiblity:hidden"></div><div id="zp_fr_is_right_hl" style="visiblity:hidden"></div><div id="zp_fr_is_bottom_hl" style="visiblity:hidden"></div><font id="zp_fr_is_label" style="visiblity:hidden"></font><script async="" src="//radar.cedexis.com/1/14290/radar.js"></script><script async="" src="//radar.cedexis.com/1/14290/radar.js"></script><script async="" src="//radar.cedexis.com/1/14290/radar.js"></script><script async="" src="//radar.cedexis.com/1/14290/radar.js"></script><script async="" src="//radar.cedexis.com/1/14290/radar.js"></script><script async="" src="//radar.cedexis.com/1/14290/radar.js"></script><script async="" src="//radar.cedexis.com/1/14290/radar.js"></script><div></div><div></div><div class="ReactModalPortal"><div data-reactroot="" class="ReactModal__Overlay ReactModal__Overlay--after-open"><div class="ReactModal__Content ReactModal__Content--after-open dangerouslyDisableFocusStyle Module ReactModal__Content inModal modalHasClose" tabindex="-1"><div class="_0 _3j _2n _2f" style="height: 660px; width: 660px;"><div class="_0 _3j _2n _2 _29 _2f _56 _5f" style="height: 100%; width: 100%;"><div class="_0 _3j _2n _2 _2f _2w _36" style="width: 50%;"><div class="_0 _3j _2n _2 _2w _i"><div class="_0 _3j _2n _8t" style="width: 216px;"><div class="_0 _3j _2n _29 _56" style="max-height: 335px;"><div class="_0 _3j _2n _2f" style="background-color: transparent; padding-bottom: 100%;"><img alt="" class="_mj _25 _3x _2h" src="https://d1w7fb2mkkr3kw.cloudfront.net/assets/images/book/lrg/9781/8784/9781878424310" /></div></div><div id="PinPanePinMeta" class="_0 _3j _2n _6n _6w"><div><div class="_0 _3j _2n _a"><div class="_0 _3j _2n" style="width: 100%;"><div class="_xu _3j _y4 _n6 _xw _53 _xv _3x" role="button" tabindex="0"><div class="_0 _3j _2n _2 _37 _6i _6k"><div class="_0 _3j _2n _6m"><div class="_sz _sy _t0 _sr _5i _ss _sw _nq _nr _ns _nt">Tell us about this Pin...</div></div><div class="_0 _3j _2n _6m"><svg xmlns="http://www.w3.org/2000/svg" class="_mh _5i _mi _25" height="16" width="16" viewBox="0 0 24 24" aria-label="Edit description" role="img"><title>Edit description</title><path d="M13.39,6.02 L17.98,10.61 L7.10,21.50 L1.00,23.00 L2.50,16.90 L13.39,6.02 Z M22.05,1.95 C23.32,3.22 23.32,5.28 22.05,6.55 L19.75,8.85 L15.15,4.25 L17.45,1.95 C18.72,0.68 20.78,0.68 22.05,1.95 Z"/></svg></div></div></div></div></div></div></div></div></div></div><div class="_0 _3j _2n _2" style="width: 330px; border-left: 1px solid rgb(245, 245, 245);"><div class="_0 _3j _2n _2 _i" style="width: 100%;"><div class="_0 _3j _2n _2 _37 _3g _6x _6y _70 _h"><div class="_0 _3j _2n _56 _75 _76"><div class="_sz _sy _t0 _sr _5k _ss _sw _o2 _o3 _o4 _o5">Choose board</div></div><button aria-label="Cancel" class="_vm _25 _5b _jw _n6" type="button"><div class="_vn _54 _2o _2w _36 _vp _6a" style="height: 32px; width: 32px;"><div class="_0 _3j _2n _54"><svg xmlns="http://www.w3.org/2000/svg" class="_mh _5i _mi _25" height="16" width="16" viewBox="0 0 24 24" aria-hidden="true" aria-label="" role="img"><title/><path d="M15.18,12.00 L22.34,4.84 C23.22,3.96 23.22,2.54 22.34,1.66 C21.46,0.78 20.04,0.78 19.16,1.66 L12.00,8.82 L4.84,1.66 C3.96,0.78 2.54,0.78 1.66,1.66 C0.78,2.54 0.78,3.96 1.66,4.84 L8.82,12.00 L1.66,19.16 C0.78,20.04 0.78,21.46 1.66,22.34 C2.10,22.78 2.67,23.00 3.25,23.00 C3.83,23.00 4.40,22.78 4.84,22.34 L12.00,15.18 L19.16,22.34 C19.60,22.78 20.17,23.00 20.75,23.00 C21.33,23.00 21.90,22.78 22.34,22.34 C23.22,21.46 23.22,20.04 22.34,19.16 L15.18,12.00 Z"/></svg></div></div></button></div><div class="_0 _3j _2n _2 _2d _3f _i" style="min-height: 0px; height: 100%; z-index: 0;"><div class="_0 _3j _2n _2d"><div class="_0 _3j _2n"><div><div class="_xu _3j _y4 _n6 _xy _56" role="button" tabindex="0"><div class="_0 _3j _2n _2 _2w _5h _6v _80"><div class="_0 _3j _2n _29 _3g _56 _5h _6o" style="height: 36px; width: 36px;"><div aria-label="bsafdasfsdfsdhfghfdghdfhg" class="_mm _mk _2f" role="img" style="background-color: transparent; background-image: url(&quot;https://d1w7fb2mkkr3kw.cloudfront.net/assets/images/book/lrg/9781/8784/9781878424310&quot;);"></div></div><div class="_0 _3j _2n _2 _2w _37 _3f"><div class="_sz _sy _t0 _sr _5k _ss _sw _nu _nv _nw _nx _sx">bsafdasfsdfsdhfghfdghdfhg</div><div data-test-id="BoardPickerSaveButton" class="_0 _
в критерий самого короткого попадается первый найденный интервал, нужно уточнить регулярку..
попробуйте такую монстро-регулярку:
Код:
(?<=<div\ aria-label=".*"\ class="_mm\ _mk\ _2f"\ role="img"\ style="background-color:\ transparent;\ background-image:\ url\(.*\);"></div></div><div\ class=".*"><div\ class=").*?(?=">bsafdasfsdfsdhfghfdghdfhg)
upload_2018-2-19_18-12-36.png
 
  • Спасибо
Реакции: chazzzzz

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 516
Благодарностей
8 703
Баллы
113
  • Спасибо
Реакции: chazzzzz

chazzzzz

Client
Регистрация
08.07.2017
Сообщения
63
Благодарностей
9
Баллы
8
@chazzzzz
вернее вот такую:
Код:
(?<=<div\ aria-label=".*"\ class=".*"\ role="img"\ style="background-color:\ transparent;\ background-image:\ url\(.*\);"></div></div><div\ class=".*"><div\ class=").*?(?=">bsafdasfsdfsdhfghfdghdfhg)
Да все работает, спасибо. Но даже не знаю, что проще делать 3-4 регулярки простые, либо одну такую)) Ну понял зато как работает самое короткое совпадение
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)