データフレームから列を取り除き、HTMLやその他の無駄なテキストを削除するUDFをScalaでアセンブルしようとしています。Scalaの一連の単語の後に文字列のすべてのテキストを削除します
私は変更する必要があるカラムが非常に厄介で、時々HTMLがあり、時々私は私が今までで達成したいものをremove HTML
に正規表現のソリューションを発見したSO検索しています...がありませんテキスト内の特定の単語を見つけてその単語の後にあるすべてのテキストを削除できる正規表現を見つけます。
私は私はあなたが)
後にすべてを削除する場合は正規表現は\).*
のようなものでなければならないことthis SO answerから理解だと思うので、私は失敗したため、正規表現についての知識の私の不足のために、私の場合にこれを適応しようとしています。
は、私のような文字列を持っている:私は除外「から送られた」までの文字列の最初の部分を保持したいと思います
I am interested to hear from you, thanks Sent from iPhone other stuff I want to delete....
を、その完璧な出力は次のようになります。
I am interested to hear from you, thanks
HTMLは、「から送られた」と、すべてのテキストが後に行いを取り除く取得しながら
val toStringNoHTML = udf[String, String](_.toString
// code from SO as linked above
.replaceAll("""<(?!\/?a(?=>|\s.*>))\/?.*?>""", " ")
// delete all text after key word
.replaceAll("""'Sent from'.*""", "")
// remove all punctuation
.replaceAll("""[\p{Punct}\n]""", " ")
)
:私はこれまで持っていることのようなものですない。どのように正規表現を動作させるために調整するヒント?
EDIT コメントで指摘したように、小さなタイプミスが動作するように私のコードを防ぐ、助けてくれてありがとう:
.replaceAll("""'Sent from'.*""", "")
が
.replaceAll("""Sent from.*""", "")
「from Sent from」から「 '」記号を取り除くだけです:.replaceAll( "" ""送信元* "" "、" ")' –
'val toStringNoHTML = udf [String、String](_。toString .replaceAll( "。*)"、 "").replaceAll( "[" * " p {Punct} \ n] "、" "))' – mrsrinivas