如何知道javaexp中的字符
您好,我们已经应用了一个模式并替换了字符,您能告诉我们下面的正则表达式替换了哪些字符吗。越来越难了解。我想要正则表达式在这里应用的字符列表。需要帮助!!请查看以下示例:如何知道javaexp中的字符,java,regex,Java,Regex,您好,我们已经应用了一个模式并替换了字符,您能告诉我们下面的正则表达式替换了哪些字符吗。越来越难了解。我想要正则表达式在这里应用的字符列表。需要帮助!!请查看以下示例: private String testRegEx(String myStr) { String regex = "[^\\s\\p{L}\\p{N}']|(?<=(^|\\s))'|'(?=($|\\s))"; Pattern pattern = Pattern.compile(regex);
private String testRegEx(String myStr) {
String regex = "[^\\s\\p{L}\\p{N}']|(?<=(^|\\s))'|'(?=($|\\s))";
Pattern pattern = Pattern.compile(regex);
if(StringUtils.isNotEmpty(myStr)) {
String firstString = myStr.replaceAll("\\r|\\n\"\'\"", "").replace("~^1~^", "").replaceAll("\\*", "").replaceAll("\\.", "");
String res = pattern.matcher(firstString).replaceAll("");
return StringUtils.normalizeSpace(res);
} else {
return StringUtils.EMPTY;
}
}
私有字符串testRegEx(字符串myStr){
String regex=“[^\\s\\p{L}\\p{N}']|”(?如果您只想知道被替换的是什么,我建议您快速调试,而不是尝试手动解决
将System.out.println(mhStr)
作为方法的第一行
在if语句的末尾,将return
替换为System.out.println(..)
;不要忘记将方法签名更改为returnnull。因此,private void testRegEx(String myStr){
检查控制台输出以查看打印的两行并比较它们。您将立即知道发生了什么
通过希望对代码进行的任何修改来恢复更改
编辑:
在第二步中,只需System.out.println(…)并让您的代码保持原样。感谢下面指出它的人。这是一种更好的方法
例如,如果您希望在StringUtils.normalizeSpace(res)
之后进行比较,那么在该行之前执行System.out.println(StringUtils.normalizeSpace(res))
在第1点之后。我建议您使用来了解您的正则表达式是如何工作的。为了正确使用正则表达式编辑器,您需要将“\\”替换为双精度“\\”。然后您将看到正则表达式路径的绘制。经过所有的尝试和错误,正如@SpinyBabbler提到的那样,为了避免所有的混淆,我们使用了rep在此链接后仅使用非ascii字符:
最后它使用了这个模式:str1.replaceAll(“[^\x00-\x7F]|[\u0001],”)
感谢您提供的所有支持。因为他也希望看到这条语句,对吗?如果不是,请将语句打印到他想要比较的语句中,不要执行以下步骤。抱歉,不清楚。我的意思是,您可以在方法末尾添加打印,而不会影响程序的其余部分。无需返回null或change方法签名。很好。这是一个愚蠢的多余步骤。编辑了答案。嘿,非常感谢您的快速回复。当然,我会尝试上面的步骤。我还试图理解正则表达式的含义。在理解字符时真的太难了:(我在debuggex中尝试过,将\\替换为single\,但给出了一个错误-UEExpected character“实际上,我无法理解术语的用法:String
没有ASCII字符;它有Unicode字符。您正在删除块中没有的所有字符以及U+0001(␁).