我有一个非字母数字字符的字符串,这个字符串包含英语和非英语字母。我需要清除非字母数字字符中的字符串,但我想保留其中一些字符。例如:假设我只想保留逗号和冒号。
示例:String st = "I, Love: ( Coding {}+-), codificación"
我希望输出为"I,Love:Coding,codificación"
有正则表达式可以做到这一点吗?
请注意,下面的方法将清除所有非字母数字字符中的文本。
public static String cleanText(String text) {
return text.replaceAll("\P{LD}+", "");
}
您可以使用
public static String cleanText(String text) {
return text.replaceAll("[^\p{L}\p{N}:,]+", "");
// or return text.replaceAll("[^\p{LD}:,]+", "");
}
详细信息:
[^
-否定字符类的开始p{L}
-任何Unicode字母p{N}
-任意数字:
-冒号,
-逗号
]+
-字符类的末尾,重复一次或多次
请参阅regex演示。查看Java演示:
import java.util.*;
import java.io.*;
class Test
{
public static void main (String[] args) throws java.lang.Exception
{
String st = "I, Love: ( Coding {}+-), codificación";
System.out.println(cleanText(st));
}
public static String cleanText(String text) {
return text.replaceAll("[^\p{L}\p{N}:,]+", "");
}
}
// => I,Love:Coding,codificación