如何使用正则表达式替换java/scala中的字符串值
下面是我在dataframe列中的一些示例字符串 (负数和正数) 当前数据帧如下所示如何使用正则表达式替换java/scala中的字符串值,scala,apache-spark,Scala,Apache Spark,下面是我在dataframe列中的一些示例字符串 (负数和正数) 当前数据帧如下所示 | PID | |abc.PID-12345.cdf | |abc.PID-12345678.xyz| |abc.PID123456789.abc| |xy.PID12345.def | |ak.PID21.ab | 我的预期输出如下 +----------------------+ | PID | +--------
| 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 |
+----------------------+
dataframe.withColumn("PID", regexp_replace(col("PID"), "regular expression", "999999999"))
如何使用正则表达式将数字替换为pid99999999
我知道regexp\u replace
可以用于以下情况
+----------------------+
| PID |
+----------------------+
| abc.PID999999999.cdf|
| abc.PID999999999.xyz|
| abc.PID999999999.abc|
| xy.PID999999999.def |
| ak.PID999999999.ab |
+----------------------+
dataframe.withColumn("PID", regexp_replace(col("PID"), "regular expression", "999999999"))
什么应该是正确的
正则表达式
模式字符串?regexp\u replace
可能就是您想要的。你可以这样做
val df = ???
df.withColumn("PID",regexp_replace(col("PID"),"-\\d+|\\d+", "999999999"))
希望这有帮助。干杯我明白了。感谢所有的反馈。
“-\\d+|\\d+”
将在PID后仅出现数字时工作。例如abc.PID-12345.cdf
。但当PID看起来像abc12.PID-12345.cdf22
更通用的方法是执行以下操作
dataframe.withColumn(“RecipientID”,regexp_replace(col(“PID”),”(?可以尝试:dataframe.replaceAll(“-\\d+\\d+”,“999999999”)
。谢谢,@devilsHnd,这将起作用。但是,我忘了指出PID可能包含数字。例如abc1.PID-12345.cdf23,因此上面的正则表达式字符串将把每个数字替换为“99999999”。我算出了,我们可以这样做。使用列(“RecipientID”,regexp_替换(col(“PID”),”(?感谢您提供反馈。但是,此正则表达式字符串将替换每个数字为“999999999”