var pattern = @"[\S\s][0-9]{1,}\e[0-9]{1,}";
var regEx = new Regex(pattern);
当针对此字符串运行时,这会产生零匹配:
"显示名称 - s01e08 - 剧集名称.mp4"
这些正则表达式测试者得到一个匹配: http://www.regexr.com/ http://regexpal.com/
但是这个蛤蜊是.Net正则表达式测试人员并不匹配: http://regexhero.net/tester/
我在我的应用中遇到的是这个。
旁注: 我想使用的实际模式是:
" [\ S \ s]的[0-9] {1,} [。\ E \ E] [0-9] {1,}"
但这给了我一个无法识别的转义序列\ E。'麻烦.Net正则表达式测试仪和我的C#应用程序出错。 我会为此创建一个新的SO问题,但是我想在这里提一下,因为我确定有人会注意到我的原始模式不会出现大写情况' E'。
答案 0 :(得分:4)
看起来您正在尝试编写RegEx for .NET而不使用其语法。 .NET不使用Posix语法是你可能正在使用的。
我可以称之为的一些错误:
以下是您的模式的含义:
[\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
答案 1 :(得分:1)
你的模式应该是
[sS](?<Season>\d+)[eE](?<Episode>\d+)
你基本上不必转义范围说明符中的字符,而\d+
是一种更简洁的写作方式[0-9]{1,}