正则表达式问题(C#)
如何在以下文件名(其中n是数字)中编写正则表达式以匹配(_Rev.n.nn):正则表达式问题(C#),c#,regex,C#,Regex,如何在以下文件名(其中n是数字)中编写正则表达式以匹配(_Rev.n.nn): 文件名(修订版)。1.00 文件名(修订版)。1.10 谢谢以下各项应能正常工作(适用于整条生产线): 应捕获大于9的版本 编辑:固定 string captureString = "abc123butts_Rev. 1.00"; Regex reg = new Regex(@"(.(?!_Rev))+\w_Rev\. (?<version>\d+\.\d+)"); string version =
- 文件名(修订版)。1.00
- 文件名(修订版)。1.10
string captureString = "abc123butts_Rev. 1.00";
Regex reg = new Regex(@"(.(?!_Rev))+\w_Rev\. (?<version>\d+\.\d+)");
string version = reg.Match(captureString).Groups["version"].Value;
string captureString=“abc123butts_Rev.1.00”;
正则表达式reg=新正则表达式(@“(?!\u Rev))+\w\u Rev\(?\d++.\d+);
字符串版本=reg.Match(captureString).Groups[“version”].Value;
根据@leppie的答案(给他绿色支票,而不是给我),你可以通过在\d
周围放置括号,从正则表达式匹配中提取数字
Regex foo = new Regex(@"_Rev\.\s(\d)\.(\d\d)$");
GroupCollection groups = foo.Match("Filename_Rev. 1.00").Groups;
string majorNum = groups[1].Value;
string minorNum = groups[2].Value;
System.Console.WriteLine(majorNum);
System.Console.WriteLine(minorNum);
没有足够的信息。你想提取什么?只是电话号码?如果是这样,您希望它作为单个数字还是其组成部分?我想提取“_Rev.n.nn”。我需要知道文件名是否以“_Rev.n.nn”结尾,然后我可以提取数字。这看起来很有希望,但不是编译。你能开一下吗?请注意,“文件名”可以是任何内容,但“Rev.n.nn”必须位于文件名末尾(不包括扩展名)。谢谢“\u Rev.n.nn”我是想写的。等等,\u Rev.之后有文件扩展名吗?没有。我用Path.GetFileNameWithoutExtension()取出了。好的,那么这应该适合你的需要。Leppie的答案不支持任何文件名,也不支持两位数的主要版本。只是说,是的,修复了文件名位。。。但是我觉得没有足够的天气信息,或者OP中不需要两位数的主要NUM。谢谢Martin,但我必须将其交给FlyingStrudel。是的,数组是基于0的,但第一组匹配此处的整个匹配字符串,因此[1]和[2]确实给出了正确的组。
Regex foo = new Regex(@"_Rev\.\s(\d)\.(\d\d)$");
GroupCollection groups = foo.Match("Filename_Rev. 1.00").Groups;
string majorNum = groups[1].Value;
string minorNum = groups[2].Value;
System.Console.WriteLine(majorNum);
System.Console.WriteLine(minorNum);