我试过在谷歌上搜索这个,但我能找到的只是如何匹配,直到出现已知字符。就我而言,我事先并不了解这个角色。
我知道我可以将字符串的最后一个字符与(.?)$
匹配,我也知道我可以匹配,直到字符X与(?:(?!X).)*
出现,但我如何将两者组合以匹配,直到第一次出现,而不是匹配的出现?
示例:
字符→char
测试→t
不匹配→没有匹配
这是一个测试→这是我来的。我看到了。我征服了。→我来了。
在伪代码中,我想要的基本上是str.substring(0,str.indexOf(str.lastChar))
。
您可以使用
^(?=(.)*$).*?1
^(?=.*(.)$).*?1
请参阅regex演示。如果需要匹配多行字符串,请参阅如何在正则表达式中跨多行匹配任何字符?。
详细信息
^
-字符串的开头(?=(.)*$)
-一个正向前瞻,捕获除换行字符之外的每个字符,直到字符串结束(最后一个保存在组1中(.*?
-除换行字符之外的任何0个或更多字符,尽可能少1
-与第1组中的字符相同