여러 줄 HTML 소스 코드를 정규식 (AutoIt 사용)과 일치 시키려고합니다. HTML 소스 코드에 맞게 :Autoit3의 여러 줄 정규식
<li class="mission">
<div>
<div class="missionTitle">
<h3>Eat a quarter-pounder with cheese</h3>
<div class="missionProgress">
<span>100%</span>
<div class="missionProgressBar" style="width: 100%;"></div>
</div>
</div>
<div class="missionDetails">
<ul class="missionRewards">
<li class="rewardCash">5,000–8,000</li>
<li class="rewardXP">XP +5</li>
</ul>
<div class="fightItems clearfix">
<h5><span>Prerequisites:</span></h5>
<div class="fightItemsWrap">
<div class="fightItem tooltip" title="Sunglasses" data-attack="Attack: 2" data-defence="Defence: 2">
<img src="/img/enhancement/3.jpg" alt="">
<span>× 1</span>
</div>
<div class="fightItem tooltip" title="Broad Shoulders" data-attack="Attack: 0" data-defence="Defence: 3">
<img src="/img/enhancement/1003.jpg" alt="">
<span>× 1</span>
</div>
<div class="fightItem tooltip" title="Irish Fond Anglia" data-attack="Attack: 4" data-defence="Defence: 8">
<img src="/img/enhancement/2004.jpg" alt="">
<span>× 1</span>
</div>
</div>
</div>
<form action="/quest/index/i/kdKJBrgjdGWKqtfDrHEkRM2duXVn1ntH/h/c0b2d58642cd862bfad47abf7110042e/t/1336917311" method="post">
<input type="hidden" id="id" name="id" value="17"/>
<button class="button buttonIcon btnEnergy"><em>5</em></button>
</form>
</div>
</div>
</li>
그것은 현재 여러 한 페이지에 배 (그러나 <div class="fightItems clearfix">...</div>
내에서 항목이 다름)이다.
- 나는
<h3>Eat a quarter-pounder with cheese</h3>
,- 과 일치하는 첫 번째 범위
<span>100%</span>
및 <input type="hidden" id="id" name="id" value="17"/>
해야합니다.
예상 결과 (한 페이지에 모든 사건에 대한) :
$a[0] = "Eat a quarter-pounder with cheese"
$a[1] = "100%"
$a[2] = "17"
내가 생각 해낸 무엇 :
(?U)(?:<div class="missionTitle">\s+<h3>(.*)</h3>\s+<div class="missionProgress">\s+<span>(.*)</span>)|(?:<form .*\s+.*<input\stype="hidden"\sid="id"\sname="id"\svalue="(\d+)"/>\s+.*\s+</form>)
는하지만 그 빈 약간의 배열 항목을 떠난다. 또한 (?s)
플래그를 시도했지만 첫 번째 발생 만 캡처하고 이후에는 일치하지 않습니다.
저는 autoit에 익숙하지 않지만 html/xml을 지원하는지 살펴 봅니다. 적절한 파서를 사용하는 것이 훨씬 낫습니다. – carlpett
다음 번에는 정규 표현식을 사용하지 않을 것입니다. 그러나 문자열의 각 행을 반복하고 특정 하위 문자열이 있는지 여부에 따라 동작을 수행하는 for 루프가 있습니다. 좀 더 유연합니다. –