Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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# 用于3个或更少字符的正则表达式选项_C#_Regex - Fatal编程技术网

C# 用于3个或更少字符的正则表达式选项

C# 用于3个或更少字符的正则表达式选项,c#,regex,C#,Regex,下面我有一个正则表达式,它适用于字符串示例,如: MCCOY 3H L24最终版本2012年2月28日.dwg或 SMITH-JOHNSON 5H R32最终版本05-26-2012.dwg 但现在,我正试图找出如何更改正则表达式,使其适用于上面的示例,如果它们是: 麦考伊3H L-ABC最终版本2012年2月28日。图纸 SMITH-JOHNSON 5H R-123最终版本05-26-2012.dwg 他们也可以像 麦考伊3H L-C2最终版本2012年2月28日。图纸 SMITH-

下面我有一个正则表达式,它适用于字符串示例,如:

  • MCCOY 3H L24最终版本2012年2月28日.dwg
  • SMITH-JOHNSON 5H R32最终版本05-26-2012.dwg
但现在,我正试图找出如何更改正则表达式,使其适用于上面的示例,如果它们是:

  • 麦考伊3H L-ABC最终版本2012年2月28日。图纸
  • SMITH-JOHNSON 5H R-123最终版本05-26-2012.dwg
他们也可以像

  • 麦考伊3H L-C2最终版本2012年2月28日。图纸
  • SMITH-JOHNSON 5H R-2最终版本05-26-2012.dwg
总而言之,中间部分总是有一个字母字符后跟一个破折号,然后它可以有多达3个数字或字母字符,或者只有1个数字或字母字符

"^[a-z]+(?:[ -][a-z]+)*\s+\d+[a-z]\s+[a-z]\d+\s+[a-z]+\s+\d{2}-\d{2}-\d{4}\.dwg$"
匹配1到3个字母数字字符

匹配1到3个字母数字字符

我需要添加一个
(?I)
来实现这一点,因为
[a-z]
与大写字符不匹配-至少在我通常使用的regexp引擎中是如此:),所以我得出了以下结论:

(?i)^[a-z]+(?:[ -][a-z]+)*\s+\d+[a-z]\s+[a-z]-\w{1,3}\s+[a-z]+\s+\d{2}-\d{2}-\d{4}\.dwg

编辑:正如@Oded让我注意到的,问题中的星号不是输入字符串的一部分-删除并更新了Regexr链接。

我需要添加一个
(?I)
来实现这一点,因为
[a-z]
与大写字符不匹配-至少在我通常使用的regexp引擎中是如此:),所以我得出了以下结论:

(?i)^[a-z]+(?:[ -][a-z]+)*\s+\d+[a-z]\s+[a-z]-\w{1,3}\s+[a-z]+\s+\d{2}-\d{2}-\d{4}\.dwg


编辑:正如@Oded让我注意到的,问题中的星号不是输入字符串的一部分-删除并更新了Regexr链接。

这是将分别返回所有字段的regex:

^(?<Customer>.*?)\s+?(?<Id1>[\-a-z0-9]*?)\s+?(?<Id2>[\-a-z0-9]*?)\s+?FINAL\s+?(?<Date>[\-0-9]{10})\.dwg$

这是将分别返回所有字段的正则表达式:

^(?<Customer>.*?)\s+?(?<Id1>[\-a-z0-9]*?)\s+?(?<Id2>[\-a-z0-9]*?)\s+?FINAL\s+?(?<Date>[\-0-9]{10})\.dwg$

你有一个问题->你认为正则表达式。现在你有两个问题!;-)-对不起,我无法阻止自己。。。()@JakubKonecki-至少链接到引号的源代码。@Oded-它可以找出那个源代码…你想用正则表达式做什么,也就是说-你想实现什么?
[a-z-]
会将
-
添加到要匹配的字符类中(如果字符类以
-
开头或结尾,它会被包括在内).你有问题->你认为正则表达式。现在你有两个问题!;-)-对不起,我无法阻止自己。。。()@JakubKonecki-至少链接到引号的源代码。@Oded-它可以找出那个源代码…你想用正则表达式做什么,也就是说-你想实现什么?
[a-z-]
会将
-
添加到要匹配的字符类中(如果字符类以
-
开头或结尾,它会被包括在内)。我相信,
**
是试图将字符加粗。OP试图解决的问题是匹配
-
。我认为
**
是试图将字符设置为粗体。OP试图解决的问题是将
-
\w{,3}匹配为小于或等于3\w{,3}匹配为小于或等于3