C#正则表达式不匹配,但正则表达式测试者匹配
var pattern = @"[\S\s][0-9]{1,}\e[0-9]{1,}";
var regEx = new Regex(pattern);
这就产生了零队的比赛时,对这个字符串运行:C#正则表达式不匹配,但正则表达式测试者匹配
“显示名称 - s01e08 - 集name.mp4”
这些正则表达式测试得到匹配: http://www.regexr.com/ http://regexpal.com/
但是这一个蛤蜊是一个.net正则表达式测试仪没有获得一场比赛: http://regexhero.net/tester/
这是我在我的应用程序中遇到的情况。
- 为什么会有差异?
- 如何修复我的正则表达式以在我的C#应用程序中获得匹配?
旁注: 我想使用的实际图案是:
“[\ S \ s]的[0-9] {1,} [。\ E \ E] [0 -9] {1,}“
但是这给了我一个'无法识别的转义序列\ E'。错误麻烦.Net正则表达式测试器和我的C#应用程序。 我将为此创建一个新的SO问题,但希望在此提及它,因为我确定有人会注意到我的原始模式不会捕获大写'E'。
看起来你正在尝试编写一个RegEx for .NET,而没有真正使用它的语法。 .NET不使用Posix语法就是你可能使用的。
有些错误,我可以打电话:
- 当你想匹配的信,你不应该ESPACE它。在你之前,你不需要任何“\”。要匹配大写字母E,只需使用E
- \ s可以匹配.NET中的空白字符。如果你想匹配一个小写字母S,只是用s
这里是你的格局意味着什么:
[\S\s] match one space character (\s) or one non-whitespace character (\S) [0-9]{1,} match a digit (0 to 9) 1 times or more \e match one escape character [0-9]{1,} match a digit one or more times
啊哈!就是这样。我一直在想。谢谢!将在时限到期时接受。 – mcqwerty 2014-09-12 23:29:10
另外,可以将'{1,}'缩短为'+' – 2014-09-12 23:32:47
你的模式应该是
[sS](?<Season>\d+)[eE](?<Episode>\d+)
你基本上没有逃脱字符在范围说明符中,而\d+
是一种更简洁的写法[0-9]{1,}
或者使用不区分大小写的修饰符。 – Sam 2014-09-12 23:53:04
你期望'\ e'或'\ E'做什么? – 2014-09-12 23:23:48
[\ S \ s]就像。 – BlackBear 2014-09-12 23:24:42
@ScottChamberlain匹配'E'或'e' – mcqwerty 2014-09-12 23:24:59