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

Regex 匹配直到字符串的最后一个字符第一次出现,regex,substring,Regex,Substring,我试过用谷歌搜索这个,但我能找到的只是如何匹配,直到一个已知的字符出现。就我而言,我事先不知道这个角色 我知道我可以将字符串的最后一个字符与(.?)$匹配,并且我知道我可以将字符X与(?:(?!X)。*匹配,但是如何将这两个字符组合起来,以匹配第一个出现的字符,而不是匹配的出现的字符 示例: 性格→ 字符 试验→ t 没有对手→ 没有匹配项 这是一个测试→ 这是一个t 我来了。我看见了。我征服了。→ 我来了 在伪代码中,我想要的基本上是str.substring(0,str.indexOf(st

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

我知道我可以将字符串的最后一个字符与
(.?)$
匹配,并且我知道我可以将字符X与
(?:(?!X)。*
匹配,但是如何将这两个字符组合起来,以匹配第一个出现的字符,而不是匹配的出现的字符

示例:

性格→ 字符
试验→ t
没有对手→ 没有匹配项
这是一个测试→ 这是一个t
我来了。我看见了。我征服了。→ 我来了

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

您可以使用

^(?=(.)*$).*?\1
^(?=.*(.)$).*?\1
看。如果需要匹配多行字符串,请参见如何匹配

详细信息

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