У меня есть этот текст:Regex матч Улучшение
<td class="devices-user-name">devicename</td>
<td>192.168.133.221</td>
<td>Storage Sync</td>
<td>10.3.3.335</td>
<td>Active</td>
<td>7/26/2016 8:39PM</td>
<td class="devices-details-button"><a class="btn btn-mini" href="#settings/devices/1/239a9cd0-d6c9-4e7d-9918-0cd686a57aac">Details</a></td>
Я хочу, чтобы поймать все между <td> </td>
а также <td class=...> </td>
То, что я достиг это регулярное выражение:
<td.*>(.*?)<\/td>(\n(.*<td>(.*?)<\/td>))(\n(.*<td>(.*?)<\/td>))(\n(.*<td>(.*?)<\/td>))(\n(.*<td>(.*?)<\/td>))(\n(.*<td>(.*?)<\/td>))(\n(.*<td.*href="(.*?)"))
После этого Мне все еще нужно исключить все совпадения <td>
:
$MatchResult = $Matches.GetEnumerator() | ? {$_.Value -notmatch 'td'} | Sort Name
Наконец я получаю эти результаты:
Name Value
---- -----
1 devicename
4 192.168.133.221
7 Storage Sync
10 10.3.3.335
13 Active
16 7/26/2016 8:39PM
19 #settings/devices/1/239a9cd0-d6c9-4e7d-9918-0cd686a57aac
Но я тихо уверен, что есть лучший способ, вместо того, чтобы дублировать группы, за исключением вещей и т.д., чтобы использовать другие/лучшие техник, которые я будем рады узнать.
Какое ваше предложение?
См Http: // StackOverflow .com/a/11656434/3832970 для альтернативного метода. –
Что касается разбора HTML с RegEx, прочитайте это сначала (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454) –