我正在寻找一种采用sed替换表达式的方法,例如s/hello/world/(意味着将“ hello”的所有实例替换为“ world”),并将其应用于Java String。理想情况下,我希望支持其他sed功能,例如捕获组等,但并非绝对必要。
Java中是否有用于此类事情的好的库?
我可以尝试自己解析sed表达式,但我不想进入逃脱处理的老鼠巢。
在Java中,您所需的replaceAll()方法是通过String类中内置的方法来完成的:
public String replaceAll(String regex,String replacement)
Run Code Online (Sandbox Code Playgroud)
例:
String test1 = "hello world";
System.out.println(test1.replaceAll("hello","hi"));
//Output: "hi world"
Run Code Online (Sandbox Code Playgroud)
捕获组replaceAll:
String test2 = "invert:me";
System.out.println(test2.replaceAll("(.*):(.*)","$2:$1"))
//Output: "me:invert"
Run Code Online (Sandbox Code Playgroud)
NB
replaceAll()sed与全局/g修饰符一起用作替换操作。replaceFirst()与上面的方法完全一样,没有全局修饰符(仅替换第一个匹配项)replace()是不同的。它不接受任何正则表达式只包含文字串!也许您正在寻找这个库:
它自 2013 年以来就不再积极开发,但在其他方面它符合您的需求。它允许你这样写:
cat test.txt | grep "Tuesday" | sed "s/kilogram/kg/g" | sort
Run Code Online (Sandbox Code Playgroud)
进入这个:
Unix4j.cat("test.txt").grep("Tuesday").sed("s/kilogram/kg/g").sort();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4123 次 |
| 最近记录: |