【问题标题】:How can I remove the last character in a String that has another regex computation in Java?如何删除在 Java 中具有另一个正则表达式计算的字符串中的最后一个字符?
【发布时间】:2021-08-29 20:55:24
【问题描述】:

我想从字符串中删除以下字符:,t,d,/ 并在第一次删除后删除最后一个字符。我想在一个声明中做到这一点。

用于删除 ,t,d,/: 的正则表达式:

 String codCIM =  element.toString().replaceAll("[<>,t,d,//]", ""); -WORKS FINE

用于删除 ,t,d,/ 和最后一个字符的正则表达式:

String codCIM =  element.toString().replaceAll("[<>,t,d,//].$", ""); -DONT WORK

例如:"dtt&gt;W43451005/dttt&gt;" 应该是 W4345100
但我只能实现:W43451005

【问题讨论】:

  • 所以ttt&gt;123ddd&gt;456&gt;&gt;&gt; 应该变成12456?还是只保留一个连续的中心字符串?
  • 请注意[&lt;&gt;,t,d,//][&lt;&gt;,td/] 相同,我认为您的意思是[&lt;&gt;td/]

标签: java regex


【解决方案1】:

尝试使用这个正则表达式:[&lt;&gt;td/]|.(?=[&lt;&gt;td/]*$)

regex 101


  • [&lt;&gt;td/] 匹配目标字符;
  • .(?=[&lt;&gt;td/]*$)匹配结束目标字符序列之前的字符,基本上是去掉所有目标字符后的最后一个字符;

【讨论】:

    【解决方案2】:

    首先,预期的输出显示应该删除由d, t, &lt;, &gt;, /组成的序列,并且然后字符before这个匹配在字符串 必须被删除。

    这可以通过以下正则表达式来实现:

    System.out.println("dtt>W43451005/dttt>".replaceAll("([<>td/]|.[<>td/]*$)", ""));
    

    输出

    W4345100
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-28
      • 2011-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多