Forum » Programiranje » [Java] Regularni izraz
[Java] Regularni izraz
iMark ::
Pozdravljeni,
Prosim, če mi kdo pomaga sestavit regularni izraz, ki bo prebral vsebino celice v HTML tabeli.
Konkretno iz take vrstice:
Torej tu bi rad dobil vn string "text text".
Hvala in lep pozdrav,
Mark
Prosim, če mi kdo pomaga sestavit regularni izraz, ki bo prebral vsebino celice v HTML tabeli.
Konkretno iz take vrstice:
<td class='x' width='70'><a href='x' class='x'><u>text text</u></td>
Torej tu bi rad dobil vn string "text text".
Hvala in lep pozdrav,
Mark
jan_g ::
<u>(.*)</u>
T.i. požrešni kvantifikator (zvezdica) je v oklepaju zato, ker s tem ustvariš capture grupo, ki jo potem lahko dobiš ven z Matcher.group() metodo. Je pa skoraj vedno za strukturiran text (kot so html, xml, json, ...) pametno uporabljati temu namenjene parserje.
jan_g ::
Ja, ok, lahko tudi reluctant quantifier, da vzameš prvo namesto najdaljše ujemanje. Odvisno od primera, če greš vrstico po vrstico ali celoten text.
Spura ::
Nic ni odvisno od primera. Tudi ce beres vsako vrstico posebi, si pripravljen tvegat naslednji scenarij?
A mislis, da v generiranem HTMLju vsak TD dobi svojo vrstico? Tvoj regex bo matchal:
<tr><td class='x' width='70'><a href='x' class='x'><u>text text</u></td><td class='x' width='70'><a href='x' class='x'><u>drug text</u></td></tr>
A mislis, da v generiranem HTMLju vsak TD dobi svojo vrstico? Tvoj regex bo matchal:
text text</u></td><td class='x' width='70'><a href='x' class='x'><u>drug text
jan_g ::
Ne, ne bi (manjka ti še zaklučni b tag). Bi pa tvoj matchal premalo, če bi v td-ju imel zaporedne tekste, pri čemer bi nekateri bli boldani, nekateri pa ne. Brezveze se zaganjaš, v splošnem problema z regexom skoraj ni možno rešiti, razen če uporabiš še backtracking, ampak potem dobiš nerazpoznavno klobaso.
Zgodovina sprememb…
- spremenil: jan_g ()
Spura ::
Brezveze se zaganjaš, v splošnem problema z regexom skoraj ni možno rešiti
No shit. Ampak v splosnem se itak ne gres tega, ce nisi ziher, da ni gnezdenih tagov ki jih isces. In ce bi imel znotraj enega TD elementa vec underlined (ne boldano) U elementov, bi moj regex pravilno matchal po zahtevah OPja, vsebino vseh takih tagov, tvoj pa zopet narobe. Tudi ce ima reluctant izraz v kakem scenariju napacno delovanje je verjetnost napacnega delovanja greedy izraza stokrat vecja. Pac se ena Regex tema na Slo-Techu, kjer folk pise prvo stvar k pade na pamet. Da performans greedy izrazov ne omenjamo.
jan_g ::
Ne, tvoj ne bi v tem primeru matchal pravilno, ker bi vzel zgolj prvo ujemanje.
Edit: ostalo pobrisal, ker je za take škoda energije.
Edit: ostalo pobrisal, ker je za take škoda energije.
Zgodovina sprememb…
- spremenil: jan_g ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [C#] Regex - samo decimalne vrednostiOddelek: Programiranje | 1367 (1065) | FrEaKmAn |
» | regex kombinacija negative, positive look behind ...Oddelek: Programiranje | 1445 (1165) | MrBrdo |
» | [Java]: replace - slovar v txtOddelek: Programiranje | 1704 (1562) | Spura |
» | Python separiranje besed v stavkihOddelek: Programiranje | 1185 (999) | Meizu |
» | jQuery loadOddelek: Izdelava spletišč | 1599 (1516) | MrBrdo |