在Java

时间:2015-12-01 10:29:38

标签: java regex sed

我正在寻找一种方法来取代sed替换表达式,例如s/hello/world/(意味着将' hello'替换为' world&# 39;),并将它们应用于Java String。理想情况下,我希望支持其他sed功能,例如捕获组等,但它们并非绝对必要。

Java中是否存在这种用于此类事物的好库?

我可以尝试自己解析sed表达式,但我宁愿不进入逃脱处理的老鼠窝。

2 个答案:

答案 0 :(得分:5)

在Java中,您需要的是使用replaceAll()方法完成的,提供内置于String类中:

public String replaceAll(String regex,String replacement)

Documentation

示例:

String test1 = "hello world";
System.out.println(test1.replaceAll("hello","hi"));
//Output: "hi world"

replaceAll中捕获群组:

String test2 = "invert:me";
System.out.println(test2.replaceAll("(.*):(.*)","$2:$1"))
//Output: "me:invert"

<强> NB

  • replaceAll()用作sed替换操作,使用全局/g修饰符。
  • replaceFirst()的工作方式与上面的方法完全相同没有全局修饰符(仅替换第一次出现)
  • replace() 不同。它接受任何正则表达式只有文字字符串!

答案 1 :(得分:3)

可能你正在寻找这个图书馆:

unix4j

自2013年以来,它并未积极开发,但它符合您的需求。它允许你写这个:

cat test.txt | grep "Tuesday" | sed "s/kilogram/kg/g" | sort 

进入这个:

Unix4j.cat("test.txt").grep("Tuesday").sed("s/kilogram/kg/g").sort();