要匹配到字符串开头的所有字符,可以使用
.*<BR>
. 但是,这与换行符不匹配(
\n
)我找到了解决办法
here
所以我们的模式可以是
(?s).*<BR>
. 下面给出一个工作实例,希望能有所帮助!
import pyspark.sql.functions as F
df = spark.createDataFrame([('''"_row"\n"<BR>Datetime:2018.06.30^
Name:ABC^
Se:4^
Machine:XXXXXXX^
InnerTrace:^
AdditionalInfo:^
<ER>''',), ],schema=['text'])
df = df.withColumn('text_cleaned',
F.regexp_replace(F.col('text'),pattern='(?s).*<BR>',replacement="<BR>"))
让我们验证一下是否有效;
print(df.select('text').collect()[0][0])
输出
"_row"
"<BR>Datetime:2018.06.30^
Name:ABC^
Se:4^
Machine:XXXXXXX^
InnerTrace:^
AdditionalInfo:^
<ER>
和
print(df.select('text_cleaned').collect()[0][0])
输出:
<BR>Datetime:2018.06.30^
Name:ABC^
Se:4^
Machine:XXXXXXX^
InnerTrace:^
AdditionalInfo:^
<ER>