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
"^[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