C# 字母v的正则表达式,后跟下划线…和任意长度的数字

C# 字母v的正则表达式,后跟下划线…和任意长度的数字,c#,regex,C#,Regex,我有一根像下面这样的线 string a= "idh_abcdef_normal_verymuch_ext_v1_20131101000000"; 如何找到“_v1”(小写字母v后跟一个数字(任意长度)的索引 以下代码不起作用:( 有人能帮我一下吗。您的正则表达式有问题: ^[v][0-9]$ 您使用的是一个模式,以v开始,以数字结束。因此,只有v0,v2…v9等字符串有效。顺便说一句,您不需要使用[v],因为它与v完全相同 您可以使用如下所示的正则表达式前瞻: _v(?=\d) 或者一

我有一根像下面这样的线

string a= "idh_abcdef_normal_verymuch_ext_v1_20131101000000";
如何找到“_v1”(小写字母v后跟一个数字(任意长度)的索引

以下代码不起作用:(


有人能帮我一下吗。

您的正则表达式有问题:

^[v][0-9]$
您使用的是一个模式,以
v
开始,以数字结束。因此,只有
v0
v2
v9
等字符串有效。顺便说一句,您不需要使用
[v]
,因为它与
v
完全相同

您可以使用如下所示的正则表达式前瞻:

_v(?=\d)

或者一个简单的正则表达式

_v\d

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

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


作为所需的正则表达式。

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

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

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

如果我们在结尾不使用“+”,它只需要一位数吗?因为你对索引感兴趣,就像其他人回答的那样,你真的不需要“+”。因为在字符串中:
some_words\u v123124
的索引与
\u v123124
的索引是单“d”注意它可能有多个数字?没有。但似乎不需要它,因为我们只对
的索引感兴趣。它也可以这样——“idh\u abcdef\u normal\u verymuch\u ext\u v1”。只是想确保v[数字]后面没有字母表@Relativity您的意思是,例如在
中,\u v1A
不包含子字符串,因为数字后面跟着
A
?我的代码在
\u v
中查找
\u v
的索引。
int index = Regex.Match(s, "_v\\d").Index;
Match match = Regex.Match(s, "_v\\d");
if (match.Success)
    index = match.Index;