java - 正则表达式修改字符串

标签 java regex

我有一个像下面这样的字符串

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,"));

Try it online

关于java - 正则表达式修改字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48988993/

相关文章:

java - 从文件流式传输 n 个整数列表以创建 n 个对象数组

java - 找不到读取类型为“jlab1.beans.Message”的 bean 中的属性 'lastname' 的方法

java - 无法使用 Intellij IDEA 运行 Java 代码

java - Spring:基于 Xml 按接口(interface)类型 Autowiring bean 列表

c# - 正则表达式 C# - 如何匹配类的方法和属性名称

javascript - RegExp 中的多匹配字符总是在最后一个结束

php - 使用正则表达式检查管道符号

javascript - 删除逗号分隔的字符串并将其替换为 javascript 正则表达式

mysql - 根的正则表达式和 MySQL 中的一些变体

java - 在 Java 中从 Excel xlsx 转换为 xls