如何知道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(␁).