字母v的正则表达式,前面是下划线…,后面是任意长度的数字

本文关键字:任意长 数字 前面 字母 下划线 正则表达式 | 更新日期: 2023-09-27 18:16:39

我有一个像下面这样的字符串

string a= "idh_abcdef_normal_verymuch_ext_v1_20131101000000";

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

下面的代码不能工作:(

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

有人能帮我一下吗

字母v的正则表达式,前面是下划线…,后面是任意长度的数字

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

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

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

您的正则表达式的问题:

^[v][0-9]$

表示您正在使用以v开始并以数字结束的模式。所以,只有像v0 v2这样的字符串…v9是有效的。顺便说一句,你不需要使用[v],因为它与v完全相同。

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

_v(?='d)
演示工作

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

_v'd
演示工作

使用说明:

_v'd+

为什么不做一个简单的搜索呢:

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