2017-04-01 8 views
0

これはスカラーブックのサンプルコードです。 このオブジェクトには、指定された文字列内の任意のhtmlタグを削除するメソッドがあります。 しかし、理由として、HTMLタグだけでなく、文字列の内容全体が削除されます。なぜ分かるの?この単純な正規表現が機能しない理由

object HtmlUtils { 
def removeMarkup(input: String) = { 
    input.replaceAll("""</?\w[^>]*>""","") 
    input.replaceAll("<.*>","") 
    } 
} 


val ahtmlText = "<html><body><h1>Introduction</h1></body></html>" 

val anewhtmlText = HtmlUtils.removeMarkup(ahtmlText) 

println(anewhtmlText) 

println(s"Before removing html tags, the string was $ahtmlText and after rmoving html tags the string became $anewhtmlText") 

答えて

0

あなたの第二replaceAllが必要とされていないと.*で貪欲な試合のためにすべてを削除します。また、必要に応じて、第1のreplaceAllを一般化することもできます。 removeMarkupを改訂し、次はあなたのために働く必要があります。

object HtmlUtils { 
    def removeMarkup(input: String) = { 
    input.replaceAll("""</?[^>]*>""", "") 
    } 
} 

scala> val ahtmlText = "<html><body><h1>Introduction</h1></body></html>" 
ahtmlText: String = <html><body><h1>Introduction</h1></body></html> 

scala> val anewhtmlText = HtmlUtils.removeMarkup(ahtmlText) 
anewhtmlText: String = Introduction 
関連する問題