javascript
  • regex
  • node.js
  • 2011-09-24 3 views 6 likes 
    6

    node.jsで実行可能なRegexが必要です(タグに異なるネストを持つことができるので、jQuery DOM Handlingなどはありません)。 HTMLタグではないテキスト、またはその一部を別のグループに入れるJavascript Regex:HTMLタグの一部ではないテキスト

    など。 "012"、 "ELT"、 "SPR"、 "plo"、 "Unterricht"、 " "、 "& nbsp"、 "plo" の文字列に一致させたい:

    <tr class='list even'> 
        <td class="list" align="center" style="background-color: #FFFFFF" > 
         <span style="color: #010101">5</span> 
        </td> 
        <td class="list" align="center" style="background-color: #FFFFFF" > 
         <b><span style="color: #010101">ELT.</span></b> 
        </td> 
        <td class="list" align="center" style="background-color: #FFFFFF" > 
         <b><span style="color: #010101">SPR</span></b> 
        </td> 
        <td class="list" style="background-color: #FFFFFF" >&nbsp;</td> 
        <td class="list" align="center" style="background-color: #FFFFFF" > 
         <strike><span style="color: #010101">pio</span></strike> 
        </td> 
        <td class="list" align="center" style="background-color: #FFFFFF" > 
         <span style="color: #010101">Unterricht</span> 
        </td> 
        <td class="list" style="background-color: #FFFFFF" >&nbsp;</td> 
        <td class="list" style="background-color: #FFFFFF" >&nbsp;</td> 
        <td class="list" align="center" style="background-color: #FFFFFF" > 
         <b><span style="color: #010101">pio</span></b> 
        </td> 
    </tr> 
    

    タグ内に「>」は存在しないことが保証されます。

    私が見つけた解決策は(?<=^|>)[^><]+?(?=<|$)だったが、それは(おそらく先読みため?それは、「無効なグループ」と言う)のNode.jsでは動作しません

    任意の提案ですか? (そして、はい、私は本当にRegexは正しい方法だと思うのは、HTMLは他の方法で入れ子にされている可能性があり、コンテンツは常にテーブルのため同じ順序です)

    +2

    私はこれにリンクが大好きです。http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – NimChimpsky

    +0

    これはあなたの探しているものですか? http://stackoverflow.com/questions/822452/strip-html-from-text-javascript –

    +1

    HTMLが正規表現ではないため、正規表現を使用してHTMLを解析することはできません(これは@NimChimpskyが与えたリンクのポイントです)。言語。 HTML ***を解析するために正規表現を単独で使用する試みは失敗します***。実際にHTMLを解析する*以外は選択肢がありません。 –

    答えて

    3

    'yourhtml'.replace < [^>] *>)/グラム、」「)

    '<tr class="list even"><td class="list" align="center" style="background-color: #FFFFFF" ><span style="color: #010101">5</span></td><td class="list" align="center" style="background-color: #FFFFFF" ><b><span style="color: #010101">ELT.</span></b></td><td class="list" align="center" style="background-color: #FFFFFF" ><b><span style="color: #010101">SPR</span></b></td><td class="list" style="background-color: #FFFFFF" > </td><td class="list" align="center" style="background-color: #FFFFFF" ><strike><span style="color: #010101">pio</span></strike></td><td class="list" align="center" style="background-color: #FFFFFF" ><span style="color: #010101">Unterricht</span></td><td class="list" style="background-color: #FFFFFF" > </td><td class="list" style="background-color: #FFFFFF" > </td><td class="list" align="center" style="background-color: #FFFFFF" ><b><span style="color: #010101">pio</span></b></td></tr>'.replace(/(<[^>]*>)/g,' ') 
    

    それは)あなたがスペースに分割することができた(一致するテキストを区切られた空間を提供します。あなたはその結果から、空の文字列を削除する必要があります。その後

    html.split(/<.*?>/) 
    

    +0

    イェップ、それは私がやることです。しかし、私は素敵なUTF-8 Charまたはsthを使用します。私の値には空白も含めることができるので、私は思う... – iStefo

    2

    たぶん、あなたは、タグ自身を使用して直接分割することができます。

    関連する問題