为了账号安全,请及时绑定邮箱和手机立即绑定

如何知道java exp中的字符

如何知道java exp中的字符

杨魅力 2022-07-27 11:27:57
我们应用了一个模式并替换了字符,您能否让我们知道下面的正则表达式替换了哪些字符。越来越难以了解。我想要字符列表作为此处应用的正则表达式。需要帮忙!!请找到以下示例: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;    }}
查看完整描述

3 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

如果您只想知道替换了什么。我建议一个快速调试的想法,而不是试图手动找出。

  1. 将 aSystem.out.println(mhStr)作为方法的第一行。

  2. 在 if 语句的末尾替换return为;System.out.println(....)不要忘记更改方法签名以返回 null。所以,private void testRegEx(String myStr) {

  3. 检查控制台输出以查看打印的两行并进行比较。你会立即知道发生了什么。

  4. 使用您希望对代码进行的任何修改来还原更改。

编辑:

  1. 在第二步中,只需 System.out.println(...) 并让您的代码保持原样。感谢在下面指出的人。更好的方法来做到这一点。

因此,例如,如果您希望StringUtils.normalizeSpace(res)在该行之前进行比较,请System.out.println(StringUtils.normalizeSpace(res));在第 1 点之后进行。


查看完整回答
反对 回复 2022-07-27
?
慕沐林林

TA贡献2016条经验 获得超9个赞

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



查看完整回答
反对 回复 2022-07-27
?
Qyouu

TA贡献1786条经验 获得超11个赞

正如@SpinyBabbler 提到的那样,经过反复试验,我们知道了一些字符,因此为避免所有混淆,我们在此链接后仅替换非 ASCII 字符: Replace non ASCII character from string

最后它使用这种模式: str1.replaceAll("[^\x00-\x7F]|[\u0001]", "");

感谢您提供的所有支持。


查看完整回答
反对 回复 2022-07-27
  • 3 回答
  • 0 关注
  • 109 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号