在Scala中搜索并替换字符串中的单词

时间:2014-09-14 17:10:37

标签: regex scala date formatting

我想用字符串

替换部分文本

示例:

来自

s3://provider/subject/foo=table/bar=NA/date=20140914 

s3://provider/subject/foo=table/bar=NA/date=2014

非常感谢您的帮助。感谢

6 个答案:

答案 0 :(得分:2)

如果您总是需要跳过日期的最后一位数,就像您提供的字符串一样,您可以使用:

"s3://provider/subject/foo=table/bar=NA/date=20140914".dropRight(4)

答案 1 :(得分:0)

正则表达式:

(=\d{4})\S*

(=\d{4})会捕获前四位数字以及前导=符号。 \S*匹配零个或多个非空格字符。

替换字符串:

$1

将匹配的字符替换为第一组内的字符将为您提供所需的输出。

DEMO

答案 2 :(得分:0)

一个简单的解决方案。

查找:(date=\d{4})\d{4}
替换:\1

答案 3 :(得分:0)

\d{4}$

试试这个。替换最后4位数字。

替换为

``

参见演示。

http://regex101.com/r/cN7qZ7/5

答案 4 :(得分:0)

在Scala中:

val s = "s3://provider/subject/foo=table/bar=NA/date=20140914"
s.replaceAll("""(date=\d{4})\d{4}""", "$1")
//res0: String = s3://provider/subject/foo=table/bar=NA/date=2014

或者,我想如果格式一致:

s.dropRight(4)
//res1: String = s3://provider/subject/foo=table/bar=NA/date=2014

答案 5 :(得分:0)

有关

val s = "s3://provider/subject/foo=table/bar=NA/date=20140914"

提取日期字段

val pattern = """(.*)date=(\w+)""".r
val pattern(_, date) = s
date: String = 20140914

然后替换(格式化)它,例如像这样,

s.replace(date, date.take(4))
res: s3://provider/subject/foo=table/bar=NA/date=2014