匹配,直到字符串的最后一个字符第一次出现



我试过在谷歌上搜索这个,但我能找到的只是如何匹配,直到出现已知字符。就我而言,我事先并不了解这个角色。

我知道我可以将字符串的最后一个字符与(.?)$匹配,我也知道我可以匹配,直到字符X与(?:(?!X).)*出现,但我如何将两者组合以匹配,直到第一次出现,而不是匹配的出现?

示例:

字符→char
测试→t
不匹配→没有匹配
这是一个测试→这是我来的。我看到了。我征服了。→我来了。

在伪代码中,我想要的基本上是str.substring(0,str.indexOf(str.lastChar))

您可以使用

^(?=(.)*$).*?1
^(?=.*(.)$).*?1

请参阅regex演示。如果需要匹配多行字符串,请参阅如何在正则表达式中跨多行匹配任何字符?。

详细信息

  • ^-字符串的开头
  • (?=(.)*$)-一个正向前瞻,捕获除换行字符之外的每个字符,直到字符串结束(最后一个保存在组1中(
  • .*?-除换行字符之外的任何0个或更多字符,尽可能少
  • 1-与第1组中的字符相同

最新更新