【问题标题】:Java String strip with regular expression带有正则表达式的Java字符串条
【发布时间】:2014-11-16 22:36:06
【问题描述】:

如何删除特定范围内的前导字符和尾随字符(最好使用正则表达式)?

例如,如果我想删除前导和尾随英文字母:

aa11bb22cc ----> 11bb22

我注意到推荐的 apache commons StringUtils.strip() 实用方法不支持正则表达式输入。例如:

String a = "aa11bb22cc";
a = StringUtils.strip(a, "[a-zA-Z]");
System.out.println(a);

输出:

11bb22cc

[a-zA-Z] 被处理为 7 个文字字符的列表。

【问题讨论】:

    标签: java regex string trim


    【解决方案1】:

    使用java的String#replaceAll()方法将目标字符替换为空白(即“删除”):

    str = str.replaceAll("(?i)^[a-z]+|[a-z]+$", "");
    

    正则表达式的意思是“忽略大小写,在开始后立即匹配字母在结束前立即匹配”

    【讨论】:

      【解决方案2】:

      试试这个模式

      ^[a-zA-Z]+|[a-zA-Z]+$
      

      Demo

      ^               # Start of string/line
      [a-zA-Z]            # Character Class [a-zA-Z]
      +               # (one or more)(greedy)
      |               # OR
      [a-zA-Z]            # Character Class [a-zA-Z]
      +               # (one or more)(greedy)
      $               # End of string/line
      

      【讨论】:

        猜你喜欢
        • 2019-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-28
        • 2013-10-21
        相关资源
        最近更新 更多