字母v的正则表达式以下划线开头......后跟任意长度数字

时间:2015-10-07 23:59:30

标签: c# regex

我有一个如下所示的字符串

string a= "idh_abcdef_normal_verymuch_ext_v1_20131101000000";

如何找到" _v1"的索引? (小写字母v后跟一个数字(任意长度)。

以下代码无效:(

Console.WriteLine(System.Text.RegularExpressions.Regex.Match(a,"^[v][0-9]$").Index);

有人可以帮助我。

4 个答案:

答案 0 :(得分:2)

如果您确定该字符串包含给定的子字符串:

int index = Regex.Match(s, "_v\\d").Index;

,否则

Match match = Regex.Match(s, "_v\\d");
if (match.Success)
    index = match.Index;

答案 1 :(得分:1)

正则表达式的问题:

^[v][0-9]$

您是否正在使用模式以v开头并以数字结束。因此,只有v0v2 ... v9等字符串才有效。顺便说一句,您不需要使用[v],因为它与v完全相同。

你可以像这样使用正则表达式:

_v(?=\d)

<强> Working demo

或简单的正则表达式

_v\d

<强> Working demo

答案 2 :(得分:0)

使用:

_v\d+

作为你需要的正则表达式。

答案 3 :(得分:-1)

为什么不进行简单的搜索:

string searchString = "_v1_";
int index = a.IndexOf(searchString);
string sNumber = a.Substring(index + searchString.Length);
long lNumber = long.Parse(sNumber);