如何知道java exp中的字符

我们应用了一个模式并替换了字符,您能否让我们知道下面的正则表达式替换了哪些字符。越来越难以了解。我想要字符列表作为此处应用的正则表达式。需要帮忙!!请找到以下示例:


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;

    }

}


杨魅力
浏览 110回答 3
3回答

慕妹3242003

如果您只想知道替换了什么。我建议一个快速调试的想法,而不是试图手动找出。将 aSystem.out.println(mhStr)作为方法的第一行。在 if 语句的末尾替换return为;System.out.println(....)不要忘记更改方法签名以返回 null。所以,private void testRegEx(String myStr) {检查控制台输出以查看打印的两行并进行比较。你会立即知道发生了什么。使用您希望对代码进行的任何修改来还原更改。编辑:在第二步中,只需 System.out.println(...) 并让您的代码保持原样。感谢在下面指出的人。更好的方法来做到这一点。因此,例如,如果您希望StringUtils.normalizeSpace(res)在该行之前进行比较,请System.out.println(StringUtils.normalizeSpace(res));在第 1 点之后进行。

慕沐林林

我建议您使用debuggex来了解您的正则表达式是如何工作的。您需要将双 '\\' 替换为 '\' 才能正确使用正则表达式编辑器。你会看到绘制的正则表达式路径。

Qyouu

正如@SpinyBabbler 提到的那样,经过反复试验,我们知道了一些字符,因此为避免所有混淆,我们在此链接后仅替换非 ASCII 字符:&nbsp;Replace non ASCII character from string最后它使用这种模式: str1.replaceAll("[^\x00-\x7F]|[\u0001]", "");感谢您提供的所有支持。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java