【发布时间】:2020-07-13 12:23:19
【问题描述】:
我正在处理一些单元格,我必须从这些单元格中提取某些字母。我想用“”替换整个字符串,除了一个单独的字符。对我来说最大的挑战是告诉我的正则表达式代码只寻找一个字符并删除其他所有内容。 进一步细化和简化;我需要我的正则表达式用“”替换所有内容,除了一个单独的字符(即左右空格或链接到数字)
public class Main {
public static void main(String[] args) {
String test = "22A 302 abc";
String works = test.replaceAll("^\\w[\\s\\S]*", " ");
System.out.println(works);
//Desired result: A
}
}
【问题讨论】:
-
像这样尝试
^[^A-Z]*((?<=[ \d])[A-Z])(?=[ \d])[^A-Z]*$regex101.com/r/mGKwkb/1 并替换为第1组。或者匹配它而不是环视^.*[\d ]([A-Z])[ \d].*$regex101.com/r/oas6PP/1 -
@Thefourthbird 我试过了。不会按照我运行时询问的方式替换它
-
您必须在 Java 中对反斜杠进行双重转义。让我添加演示代码。
-
我已将更新后的代码添加到答案中。
-
@Thefourthbird 我们有问题。当有逗号例如“22A,02 abc”时,它不会按原意替换 - 它保留这样的值。点和其他特殊字符也是如此