java - 正则表达式替换除字母以外的所有内容

标签 java regex

什么是简洁的正则正则表达式,用于从不是字母表的字符串中删除所有内容

        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    int T=0; 
    try{
        T= Integer.parseInt(br.readLine());

        while(T>0)
                String input=br.readLine();
                **String res= input.replaceAll("^[a-zA-Z]"," " );**
                System.out.println(res);

也试过

      input.replaceAll("[^a-zA-Z]]"," " )

它们都没有替换输入字符串中的任何内容。输入字符串保持原样

编辑:

         input.replaceAll("[^a-zA-Z]"," " )  //works well
         input.replaceAll("^[a-zA-Z]"," " )  //replaces first char of string

最佳答案

你需要:

input = input.replaceAll("[^a-zA-Z]"," " );
^^^^^^^                          ^ ^

您需要使 input 引用指向 replaceAll 方法返回的 String 对象,以获取更改后的字符串,因为字符串是不可变的。

A-z 范围不是您想要的。您需要 A-Z

此外,您的模式中还有一个额外的 ]

See it

关于java - 正则表达式替换除字母以外的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13329449/

相关文章:

regex - 为什么我的正则表达式匹配版本号不起作用?

Java - 可运行的线程未启动

java - 无法验证包含变音符号的文本

java - 阐明不使用泛型

大写反向引用的正则表达式

javascript - JS 正则表达式仅查找 1 或 2 个长数字

java - 迭代自定义哈希表

java - 从父类(super class)继承@JsonCreator注解

c# - 精确匹配单词,如果前面有特殊符号则不匹配

电话号码的 Javascript 正则表达式