【问题标题】:Java Regex Eliminate the last certain character to the end of string [duplicate]Java正则表达式消除字符串末尾的最后一个特定字符[重复]
【发布时间】:2017-02-09 10:15:55
【问题描述】:

模式:([^\|]*)

字符串:

  1. 他们去年夏天在越南|中国|老挝发现了巨大的黄金。 | BBCworld.com
  2. 他们去年夏天在越南|中国|老挝发现了巨大的黄金。

结果:他们在越南发现了巨大的黄金

演示:http://regexr.com/3f8hi

目标:

他们去年夏天在越南|中国|老挝发现了巨大的黄金。

【问题讨论】:

  • 问题:你怎么知道可以从字符串 1 中删除“|BBCworld.com”,但不能删除“|Lao last summer”。从字符串 2?您必须先回答该问题,我们才能回答您的问题。
  • P.S. @WiktorStribiżew 这不是重复的,只是措辞不佳且定义不佳。

标签: java regex


【解决方案1】:

在不需要的地方使用正则表达式的经典案例:

String result = input.substring(0, input.lastIndexOf('|'));

【讨论】:

  • 我会说indexOf:该示例说对于They found the the huge gold in Vietnam|China|Lao last summer. | BBCworld.comThey found the the huge gold in Vietnam|China|Lao last summer.,结果应该是They found the the huge gold in Vietnam,所以它是| 的第一个索引,而不是最后一个.
  • @BackSlash 但期望的输出是“他们去年夏天在越南|中国|老挝发现了巨大的黄金。”。
  • 哦。所以“结果”是他得到的,而“目标”是他想要实现的……我的错,但 OP 可以解释得更好一点。对不起!
  • @BackSlash 没问题,不是很清楚。
【解决方案2】:

使用$ 锚点,表示字符串结束:

\|[^|]*$

【讨论】:

    猜你喜欢
    • 2010-11-23
    • 1970-01-01
    • 2011-02-25
    • 2021-07-29
    • 2021-01-04
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    • 1970-01-01
    相关资源
    最近更新 更多