我試圖在Scala中組裝一個UDF,它從數據框中取出一列,並操縱它刪除HTML和其他無用的文本。在Scala中刪除單詞後的所有文本
我需要修改的列是非常混亂,有時有HTML,有時候沒有......搜索,所以我必須找到一個正則表達式解決remove HTML
我想現在是時候完成什麼找到一個正則表達式,可以找到文本中的特定單詞並刪除該單詞之後的所有文本。
我想我從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
我到目前爲止是這樣的:
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]""", " ")
)
雖然HTML獲取刪除了「寄自」和所有的文字後不不。任何提示如何調整正則表達式使其工作?
編輯 在評論中指出,一個小錯字防止我的代碼工作,感謝您的幫助:
.replaceAll("""'Sent from'.*""", "")
應該
.replaceAll("""Sent from.*""", "")
只刪除'''''''發送'''.replaceAll(「」「*」「」,「」「)發送'''''''' –
'val toStringNoHTML = udf [String,String](_。toString .replaceAll(「」「<(?!\/?a(?=> | \ s。*>))\ /?。*?>」「」,「」).replaceAll(「從(。*)」,「」)發送.replaceAll(「[\ p {Punct} \ n]「,」「))' – mrsrinivas