lelvisl
@lelvisl

Как выловить второе, третье, n-ое совпадение в regexp?

Есть такая страница
Любимые регионы:

<div>Макрорегион</div>
<div><select name="favoriteRegionsPanel:panel:expandable-panel:macroRegionSelect" id="id578">
<option selected="selected" value="">Выберите значение</option>
<option value="0">МР Москва</option>
<option value="1">МР СЗ</option>
<option value="2">МР Юг</option>
<option value="3">МР Сибирь</option>
<option value="4">МР Урал</option>
<option value="5">МР ПСЗ</option>
<option value="6">МР ДВ</option>
<option value="7">МР ПЮВ</option>
</select></div>
</div>
<div>
<div>Регион</div>
<div><select id="id59a" style="display:none"></select></div>
</div>

</div>
</div>
</div>

</div>


<div class="clear">&nbsp;</div>

<div class="expandable-panel-level0">
<div class="expandable-panel-header-level0" id="id57b">
<img id="id59b" src="/images/tree-node-collapse.gif" alt="Раскрыть"/>
Региональные настройки:

<div>Макрорегион</div>
<div><select name="regionalSettingsPanel:panel:expandable-panel:macroRegionSelect" id="id57a">
<option selected="selected" value="">Выберите значение</option>
<option value="0">МР Москва</option>
<option value="1">МР СЗ</option>
<option value="2">МР Юг</option>
<option value="3">МР Сибирь</option>
<option value="4">МР Урал</option>
<option value="5">МР ПСЗ</option>
<option value="6">МР ДВ</option>
<option value="7">МР ПЮВ</option>


есть регексп
<option value="(.*?)">МР ПЮВ</option>

Он выловит мне значение из первой части только. Можно ли указать в регулярке что бы он брал не первое, а определенное вхождение?
  • Вопрос задан
  • 1152 просмотра
Решения вопроса 2
lelvisl
@lelvisl Автор вопроса
Докопал таки сам - помогло FindAllStringSubmatch

https://play.golang.org/p/-IwYmNCVWD
Ответ написан
Winsik
@Winsik
сис.админ, недопрограммист :)
// You can edit this code!
// Click here and start typing.
package main

import "fmt"
import "regexp"

func main() {
s := "1 days 40 hrs 23 min 50 sec"
    re := regexp.MustCompile("(?P<quant>\\d+) (?P<unit>\\w+)+")
segs2 := re.FindAllStringSubmatch(s, -1)
for i := 0; i < len(segs2); i++ {
    fmt.Println(segs2[i][1], "," ,segs2[i][2]);
}
	
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы