我正在寻找一种方法来取代sed
替换表达式,例如s/hello/world/
(意味着将' hello'替换为' world&# 39;),并将它们应用于Java String。理想情况下,我希望支持其他sed
功能,例如捕获组等,但它们并非绝对必要。
Java中是否存在这种用于此类事物的好库?
我可以尝试自己解析sed表达式,但我宁愿不进入逃脱处理的老鼠窝。
答案 0 :(得分:5)
在Java中,您需要的是使用replaceAll()
方法完成的,提供内置于String类中:
public String replaceAll(String regex,String replacement)
示例:
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)
可能你正在寻找这个图书馆:
自2013年以来,它并未积极开发,但它符合您的需求。它允许你写这个:
cat test.txt | grep "Tuesday" | sed "s/kilogram/kg/g" | sort
进入这个:
Unix4j.cat("test.txt").grep("Tuesday").sed("s/kilogram/kg/g").sort();