我有一个像下面这样的字符串
A:82% X 18% Y B:100% X C:82% X 18% Y AB:82% X 18% Y
想要将上面的字符串转换成下面的格式(要求格式)
#A:82% X,18% Y #B:100% X #C:82% X,18% Y #AB:82% X,18% Y
我能做到这一点
#A:82% X 18% Y #B:100% X #C:82% X 18% Y #AB:82% X 18% Y
使用这段代码
String inp = "A:82% X 18% Y B:100% X C:82% X 18% Y AB:82% X 18% Y";
String regex = "(\\b[A-Za-z]{1,}\\:\\b)";
System.out.println(inp.replaceAll(regex, "#$1"));
但是我无法找到一种方法来按照我想要的方式在要求的格式中放置逗号。
有什么方法可以让我只选择除“#word:”、“Number%”和“spaces”之外的单词, 所以在结果中我只能选择 Xs 和 Ys(X 和 Y 只是一个例子,其他词也是可能的)。因为一旦我能够选择那些词 我可以将它们替换为“$1”,
谢谢
最佳答案
编辑:评论后更新regex
(\d+%\s[A-Z]+)\s(?=\d+%\s[A-Z]+)
将匹配模式 (Number% Word) 后跟 (Number% Word),而不会消耗第二个,因为它是前瞻性的。
\1,
Java代码:
String inp = "A:82% X 18% Y B:100% X C:82% X 18% Y AB:60% X 20% Y 20% ZZ";
String regex = "(\\b[A-Za-z]{1,}\\:\\b)";
String inp2 = inp.replaceAll(regex, "#$1");
String regex2 = "(\\d+%\\s[A-Z]+)\\s(?=\\d+%\\s[A-Z]+)";
System.out.println(inp2.replaceAll(regex2, "$1,"));
关于java - 正则表达式修改字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48988993/