以下是我的数据框列中的一些示例字符串 (负数和正数)
Current Dataframe看起来像这样
| PID |
|abc.PID-12345.cdf |
|abc.PID-12345678.xyz|
|abc.PID123456789.abc|
|xy.PID12345.def |
|ak.PID21.ab |
我的预期输出如下
+----------------------+
| PID |
+----------------------+
| abc.PID999999999.cdf|
| abc.PID999999999.xyz|
| abc.PID999999999.abc|
| xy.PID999999999.def |
| ak.PID999999999.ab |
+----------------------+
如何使用正则表达式将数字替换为PID999999999
?
我知道regexp_replace
可以在以下
dataframe.withColumn("PID", regexp_replace(col("PID"), "regular expression", "999999999"))
正确的regular expression
模式字符串应该是什么?
答案 0 :(得分:0)
我明白了。感谢所有的反馈。
只有在PID之后才出现数字时,"-\\d+|\\d+"
才有效。例如abc.PID-12345.cdf
。但当PID看起来像abc12.PID-12345.cdf22
更通用的方法是执行以下操作
dataframe.withColumn("RecipientID", regexp_replace(col("PID"), "(?<=PID)[^\\.]+", "999999999"))
答案 1 :(得分:-1)
regexp_replace
可能就是你要找的东西。你可以这样做,
val df = ???
df.withColumn("PID",regexp_replace(col("PID"),"-\\d+|\\d+", "999999999"))
希望这有帮助。干杯