`

replaceAll抛出PatternSyntaxException异常的小陷阱

    博客分类:
  • Java
阅读更多

有时候使用replaceAll方法的时候会抛出PatternSyntaxException异常,通过看源代码发现。然后这个是没有显式的抛出异常,所以使用replaceAll方法的时候,没有try或者throw是完全没有错误的,因为PatternSyntaxException是一个运行时异常,就是只有运行时出错才抛出异常。不能算一个bug,只能是用这个方法的一个小陷阱。

 

 

 

public String replaceAll(String regex, String replacement) {
	return Pattern.compile(regex).matcher(this).replaceAll(replacement);
    }

 

 

/**
     * Compiles the given regular expression into a pattern.  </p>
     *
     * @param  regex
     *         The expression to be compiled
     *
     * @throws  PatternSyntaxException
     *          If the expression's syntax is invalid
     */
    public static Pattern compile(String regex) {
        return new Pattern(regex, 0);
    }

 

string中的replace、replaceAll、split等方法实际是用到了正则表达式,然后正确中compile的静态方法会抛出该异常。

如果正则表达式中带有"(,[,-,/"等字符的时候则会抛出该异常,因为这些字符是正则表达式中的构造字符。

分享到:
评论

相关推荐

    JS中实现replaceAll的方法(实例代码)

    这个自定义的replaceAll方法不仅考虑了正则表达式和普通字符串作为查找目标,还考虑了是否需要区分大小写的问题(ignoreCase参数)。 在这个自定义replaceAll方法中,首先判断传入的参数中,查找目标(reallyDo)...

    ReplaceAll

    ReplaceAll 多文件文本批量替换工具 依赖.net framework2.0

    Java中replace、replaceAll和replaceFirst函数的用法小结

    Java中的`replace`、`replaceAll`和`replaceFirst`是字符串操作中常见的方法,用于替换字符串中的特定子串。它们都是`String`类的方法,但各自有不同的行为和用途。 1. `replace(CharSequence target, CharSequence...

    PB_ReplaceAll

    3. **空值处理**:如果`old_string`或`find_string`为空,`ReplaceAll`可能不会执行任何操作,或者会抛出错误,需要在调用前进行适当的检查。 4. **返回值**:`ReplaceAll`会返回一个新的字符串,原始字符串不会被...

    js使用正则实现ReplaceAll全部替换的方法

    因此,如果需要实现replaceAll效果,即替换字符串中所有匹配的子串,可以使用正则表达式配合replace()方法来实现。 正则表达式中的全局匹配标志(g)用于指示匹配操作应该在输入字符串中进行全局搜索,即查找到所有...

    用C#写的字符串处理函数,字符串处理出BUG的朋友可以使用它。较上一个版本修正了一处bug,并增加了ReplaceAll方法。

    Console.WriteLine(ms.ReplaceAll("hello world","l","*")); //输出”he**o wor*d" ArrayList list=ms.GetPosList("hello world","l"); foreach(int pos in list){ Console.WriteLine("" + pos); } //输出2,3,9

    JavaScript中使用replace结合正则实现replaceAll的效果

    在上述示例中,我们使用`javascript:`协议直接在浏览器地址栏中执行了一段JavaScript代码,这段代码会弹出一个包含替换后的字符串`"adbcdabc"`的警告框。 在实际应用中,开发者们通常需要结合具体场景灵活运用...

    replaceall.java

    数据结构 二叉树 替换子树replaceAll \***********************************************************************************************/

    String.prototype.replaceAll:适用于String.prototype.replaceAll ESnext提案的符合规范的polyfill

    string.prototype.replaceall 用于String.prototype.replaceAll的ES Proposal规范填充程序。 如果不可用或不String.prototype.replaceAll调用其“ shim”方法对String.prototype.replaceAll进行填充。 该软件包...

    Java中replace和replaceAll的区别

    replace和replaceAll是JAVA中常用的替换字符的方法,它们的区别是:  1)replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,说白了也是字符串);  2)...

    replaceall:替换 JavaScript 字符串中的所有实例

    var replaceall = require("replaceall"); 使用替换 var result = replaceall ( "instances of this" , "with this string" , "in this string" ) ; 例子 var original = "hello world goodbye world" ; ...

    Java replaceAll()方法报错Illegal group reference的解决办法

    当`$`后面跟随的数字没有对应的捕获组时,Java编译器会抛出`IllegalArgumentException`,提示“非法的组引用”。 来看一个例子,假设我们有以下代码: ```java public class Test { public static void main...

    jQuery中replaceAll()方法用法实例

    接下来,我们将深入探讨`replaceAll()`方法的用法、功能、参数以及一个具体的实例。 ### `replaceAll()`方法概述 `replaceAll()`方法的目的是找到一个选择器匹配的所有元素,并将它们替换为传入的新内容。这个方法...

    JavaScript实现的字符串replaceAll函数代码分享

    从给出的部分内容中,我们可以看到具体的replaceAll函数实现代码。代码首先检查传入的第一个参数是否为正则表达式类型,如果不是,则利用RegExp构造函数生成一个正则表达式,并根据是否忽略大小写(ignoreCase)来...

    JAVA正则表达式,比较难学,好好看看

    `PatternSyntaxException`是当提供的正则表达式语法错误时抛出的异常。例如,如果尝试编译一个包含未封闭的括号或无效字符类的正则表达式,Java会抛出此异常。 虽然Java的正则表达式功能强大,但它与Perl等语言中的...

    浅谈Java中replace与replaceAll区别

    "浅谈Java中replace与replaceAll区别" Java 中的字符串 replacement 是一个非常重要的知识点,今天我们就来探讨 Java 中的 replace 和 replaceAll 方法之间的区别。 首先, lets Talk about Java 中的 replace ...

    String.replaceAll方法详析(正则妙用)

    在Java编程语言中,`String.replaceAll`方法是一个非常强大的工具,尤其当结合正则表达式使用时,可以实现复杂的文本处理。本文将深入探讨`String.replaceAll`方法的使用及其背后的正则表达式分组概念。 首先,`...

    java替换html特殊字符工具类

    htmlStr =htmlStr.replaceAll("&forall;", "∀"); htmlStr =htmlStr.replaceAll("&part;", "∂"); htmlStr =htmlStr.replaceAll("&exists;", "∃"); htmlStr =htmlStr.replaceAll("&empty;", "∅"); htmlStr...

Global site tag (gtag.js) - Google Analytics