Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正则表达式问题(C#)_C#_Regex - Fatal编程技术网

正则表达式问题(C#)

正则表达式问题(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 =

如何在以下文件名(其中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 = 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);