Scalaの使用thisの質問に従ってデータからURLを削除しようとしています。 ScalaでfilterNotの正規表現変数を使用するにはどうすればよいですか?
val urls = """(https?\\://)\\S+"""
val removeRegexUDF = udf(
(input: Seq[String]) => input.filterNot(s => s.matches(urls))
が、これは、データには影響を与えないように見える:
val removeRegexUDF = udf(
(input: Seq[String]) => input.filterNot(s => s.matches("(https?\\://)\\S+"))
filteredDF.withColumn("noURL", removeRegexUDF('filtered)).select("racist", "filtered","noURL").show(100, false)
は、今私は、変数の代わりに、正規表現リテラルを使用したいので、私は試してみてください。そして、次のコードは正常に動作します。私が試してみてください。
val urls = """(https?\\://)\\S+""".r
が、これはエラーを与える:
urls: scala.util.matching.Regex = (https?\\://)\\S+
<console>:45: error: type mismatch;
found : scala.util.matching.Regex
required: String
(input: Seq[String]) => input.filterNot(s => s.matches(urls))
これを達成するための方法上の任意の案内がはるかに高く評価されます。
二重バックスラッシュまたは三重引用符を使用してください。元のコードでは二重バックスラッシュを使用しています。なぜ、 'val urls'に三重引用符を追加したのですか? – Kolmar