正则表达式匹配所有内容,直到最后一个数字

本文关键字:最后一个 数字 正则表达式 | 更新日期: 2023-09-27 17:56:21

我有几个字符串看起来像这样

EXT. 6TH STREET12B
EXT. HOSPITAL20
EXT. 20TH STREET 40AB

我如何匹配所有内容,直到最后一个数字开始。结果需要为:

EXT. 6TH STREET
EXT. HOSPITAL
EXT. 20TH STREET

我根本不是正则表达式专家。我尝试了一些方法,但似乎没有什么接近。

正则表达式匹配所有内容,直到最后一个数字

下面是一个纯字符串方法:

var digits = "0123456789".ToCharArray();
var trimEnd = digits.Concat(new[]{' ', ''t'}).ToArray(); // if desired
for (int i = 0; i < lines.Length; i++)
{
    string line = lines[i];
    int lastIndexOfDigit = line.LastIndexOfAny(digits);
    if (lastIndexOfDigit >= 0)
        line = line.Remove(lastIndexOfDigit).TrimEnd(trimEnd);
    lines[i] = line;
}

使用*的贪婪

@".*(?<='D)(?='d)"

@".*(?<!'d)(?='d)"

演示

如果您不想匹配最后一个数字之前存在的空格。

@".*(?<=[^'d's])(?='s*'d)"

演示