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

时间:2015-06-16 07:54:22

标签: c# regex

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

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

如何匹配所有内容,直到最后一个号码开始。结果必须是:

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

我根本不是正则表达式专家。我尝试了一些东西,但似乎没有任何结果。

2 个答案:

答案 0 :(得分:4)

这是一个纯字符串方法方法:

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;
}

答案 1 :(得分:1)

使用*

的贪婪
@".*(?<=\D)(?=\d)"

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

DEMO

如果您不想匹配最后一个号码之前的空格。

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

DEMO