回答
我认为你的问题是,正则表达式模式是由你的正则表达式测试器和.NET Framework不同。在代码中使用模式时,必须记住,您的字符串将被检查转义字符。
当你的正则表达式测试仪得到(.)\\1{2,}
,.NET框架Regex
得到(.)\1{2,}
因为"\\"
变得\
。您可以通过更改您的模式来修复此问题,如string pattern = "(.)\\\\1{2,}";
或使用string pattern = @"(.)\\1{2,}";
禁用转义字符。
您可以通过考虑另一种模式(如\w
)来查看差异。因为"\w"
包含未知的转义序列(串在开发时进行评估)
Regex.Match("\w", myTestString);
这将导致一个编译器错误。为了解决这个错误,我在字符串前添加了@
,编译器得到满足。
Regex.Match(@"\w", myTestString);
在你的情况,因为"\\"
仍然是一个有效的字符串,你没有得到一个错误。但正如您所遇到的,
Regex.Match("\\", myTestString);
Regex.Match(@"\\",myTestString);
可能会导致不同的结果。
好吧,让我解释一下我在这个问题上真正想要的是什么,我想知道为什么参考MTF#Y2015-19555这个字符串可以通过这个正则表达式, 我不希望它是通过,从图像本身它显示字符串是有效的这个正则表达式 –
好的,让我试着解释它。在情况1(你的正则表达式测试工具)中:模式是'(。)\\ 1 {2,}'。这意味着,每个输入匹配女巫包含任何字符后跟一个'\\'和两个或更多'1's。第二种情况:模式(评估字符串)是'(。)\ 1 {2,}'。注意模式中缺少的'\\'。现在每个输入都匹配,其中包含由单个字符('.')组成的组(括号包围)。该组通过'\ 1'获取索引1。该组本身必须重复两次或更多次(不是任何但是相同的字符)。在'参考MTF#Y2015-19555''555'匹配。 –
如果你的目的是要禁止任何重复的数字,你可以设置一个条件整场比赛用负前瞻:
string pattern = @"^(?!.*(\d)\1.*$).+$";
在快报测试:
我的答案解决了你的问题吗?正如我所说,你的原始正则表达式正在捕获一个重复2次或更多次的符号,因此捕获了'555'。我的正则表达式不允许随后的数字重复。请让我知道您的匹配标准是什么,我会很高兴展示C#解决方案并向您解释。 –
- 1. 正则表达式错误
- 2. 正则表达式错误
- 3. 正则表达式错误
- 4. 正则表达式错误
- 5. 正则表达式错误
- 6. 正则表达式错误
- 7. 正则表达式(正则表达式)
- 8. 正则表达式(正则表达式)
- 9. 正则表达式(正则表达式)
- 10. 正则表达式错误PHP错误
- 11. 正则表达式表达
- 12. 正则表达式表达
- 13. 正则表达式表达
- 14. 正则表达式模式错误
- 15. php正则表达式 - 模式错误
- 16. 正则表达式正则表达式正则表达式使用正则表达式,但不是与Python
- 17. 从正则表达式表达式匹配匹配 - 错误
- 18. 正则表达式正则表达式返回的值正则表达式
- 19. 正则表达式正则表达式模仿正则表达式
- 20. PHP-MySQLi替换为正则表达式/正则表达式/正则表达式
- 21. 正则表达式出错
- 22. MVC3正则表达式验证 - “语法错误在正则表达式”
- 23. Javascript正则表达式错误(无效的正则表达式:/?/:无法重复)
- 24. C++的正则表达式错误
- 25. 正则表达式中的错误?
- 26. 正则表达式错误php
- 27. 正则表达式组参考错误
- 28. Perl的正则表达式错误
- 29. Objective-C的正则表达式错误
- 30. Perl正则表达式错误帮助
符合字符串的标准是什么?现在,您正在捕获一个重复2次或更多次的符号,因此会捕获“555”。第一张屏幕截图显示您的测试存在问题:您使用双反斜杠,而您应该使用1. –
实际上这不是我的项目,我正在尝试增强它,并且 参考MTF#Y2015-19555 不可能匹配这个正则表达式, 但.net framework 2.0正则表达式让它通过这个正则表达式 –