正则表达式,类似于.NET Mid函数

时间:2013-08-30 13:50:19

标签: regex vb.net

我正在进行大型机套接字调用。每条消息都有不同的响应,但该响应中包含的消息代码表示成功或失败。

我已经构建了一个套接字对象,它将使套接字调用大型机。我希望能够动态评估响应并让对象确定它是成功还是失败。

基本上,此时我正在使用字符串响应消息。

理想情况下,我会将消息“Mid(ResponseMessage,17,2)”保存为字符串,然后进行评估。因为我不能,我正在寻找正则表达式来做类似的功能。

那么,使用正则表达式查看字符串并获得类似的中间表达式返回的最佳方法是什么:Mid(ResponseMessage,17,2)?

Per Ken,我正在添加字符串值EXAMPLE:“000000000000000099”

根据基督徒示例,我尝试了以下代码:

ResponseMessage = "000000000000000099 " Text.RegularExpressions.Regex.Match(ResponseMessage,"^.{16}(.{2})").Value

我收到的输出是"000000000000000099"
我预期的输出是:"99"

1 个答案:

答案 0 :(得分:1)

这个怎么样:"^.{16}(.{2})"

<强>更新

Match.Value不是从正则表达式中提取匹配组的方式。你想要这样的代码:

private static string Mid172(string text) {
    var match = Regex.Match(text, "^.{16}(.{2})");
    if(match.Success) {
        return match.Groups[1].Value;
    } else {
        return null;
    }
}

或者使它像它模拟的VB函数一样通用:

private static string Mid(string text, int oneBasedStart, int length) {
    var match = Regex.Match(text, string.Format("^.{{{0}}}(.{{{1}}})", oneBasedStart - 1, length));
    if(match.Success) {
        return match.Groups[1].Value;
    } else {
        return null;
    }
}