给出一个在正则表达式java中使用Cyirial的示例

给出一个在正则表达式java中使用Cyirial的示例,java,regex,string,Java,Regex,String,如何生成西里尔文字符串的正则表达式,我想以某种方式使用它: String.replaceAll(“κцццца”和“”) 当然不行了。我该怎么做,让它工作 好的,我知道这个方法是有效的,但它对我不起作用。我如何检查,为什么方法不执行 嗯,我试着使用s1=s1.replaceAll(“[\\p{incyrical}]”,“”)用于我通过套接字获得的字符串。它工作得很好,所有西里尔字母都消失了,包括单词“CharStyleззззззззз”,但如果我尝试s1=s1.replaceAll(“Cha

如何生成西里尔文字符串的正则表达式,我想以某种方式使用它:

String.replaceAll(“κцццца”和“”)

当然不行了。我该怎么做,让它工作

好的,我知道这个方法是有效的,但它对我不起作用。我如何检查,为什么方法不执行

嗯,我试着使用
s1=s1.replaceAll(“[\\p{incyrical}]”,“”)用于我通过套接字获得的字符串。它工作得很好,所有西里尔字母都消失了,包括单词
“CharStyleззззззззз”
,但如果我尝试
s1=s1.replaceAll(“CharStyleззззззз

但是方法
s1=s1.replaceAll(“ззаааааа”和“)
在同一程序中为该程序中定义的静态字符串工作。我猜这个问题可能是因为错误的字符集,但我仍然不明白我做错了什么。字符串的字符集是
windows-1251
。我尝试在程序中使用字符集(现在是jsp),使用方法

System.setProperty("file.encoding", "windows-1251");
response.setCharacterEncoding("windows-1251"); 
已尝试将字符串从一个字符集转换为另一个字符集。没有任何变化

只是尝试了一下:

String s1 = "Введение в специальность (Б.3.2.1-ПиКО)60,3Экзамен";
String s2 = s1.replaceAll("Экзамен", "");
System.out.println(s2);
输出为:

Введение в специальность (Б.3.2.1-ПиКО)60,3

如果你在案例@Henry的答案中展示你的结果,可能会更清楚。 我想问题在于字符或编码。 要确定是西里尔文字符串,可以使用以下代码:

String s1 = "Экзaмен";
s1 = s1.replaceAll("[\\p{InCyrillic}]", "");
System.out.println(s1);
该代码将删除所有西里尔字母字符,您可以识别无效的编码字符

如果您的结果类似于“a”或“e”或“ae”,这意味着字符串中存在类似于西里尔文的拉丁字符,因此您应该使用此正则表达式替换

 s1 = s1.replaceAll("Экз[aa]м[ee]н", "");
其中[a-是西里尔字母,a-是拉丁字母],依此类推

如果您的结果为“Бзaзз”,则编码中的问题,我希望此链接将对您有所帮助


什么不起作用?你能举个例子吗?这应该没有问题。这里有一个例子:我有一个带西里尔字母的字符串c,它有一个字符序列。我做c=c.replaceAll(“Бззааааа”),即;并得到一个字符串c=БССССаааааааа(Б.3.2.1-Паааа)60,3Пззаааа。问题是我在做一个长串的替换吗?应该可以。如果文件未正确编译并使用正确的编码,或者文本输入的编码不正确,则替换将失败。您是要替换序列“зззззззззз”中的每个字符,还是替换“ззззззз1079。。。也许是字符集或Tomcat的问题。。。奇怪的是,这种方法不仅仅适用于西里尔文。但我看不出有什么问题。