Mar*_*cus 2 .net c# java regex
我有正则表达式,它在.NET中匹配但在Java中不匹配.我认为Java版本是正确的,所以我想知道如何在.NET中复制这个功能.
这是模式:
([12AB]?)[: ]*(Mo|Mn|M|Tu|We|Wd|W|Th|Fr|F|Sa|Su)(\w*)[: ]*(\w*)[: ]*(\w*)
Run Code Online (Sandbox Code Playgroud)
这是测试字符串:
D1:AM
Run Code Online (Sandbox Code Playgroud)
这是一个有效的例子:RegEx Fiddle
单击Java以查看Java的结果:

点击.NET的结果:

除了你再次成为Java错误名称.matches()方法的另一个受害者之外,没有任何区别.正则表达式匹配可以发生在输入的任何地方,如果你想匹配,比如说只在输入的开头,你必须明确告诉正则表达式引擎.
如果再次查看粘贴的图像,您将看到.find()Java返回true,与.Match().NET 相同.Java .find()是真正的正则表达式匹配,.NET也是如此.Match().
Java在这里是错误的.matches(),因为它在开头和结尾都锚定了正则表达式(旁注:.lookingAt()仅在开头的锚点).如果要在.NET中复制该行为,请锚定正则表达式:
^([12AB]?)[: ]*(Mo|Mn|M|Tu|We|Wd|W|Th|Fr|F|Sa|Su)(\w*)[: ]*(\w*)[: ]*(\w*)$
Run Code Online (Sandbox Code Playgroud)
(但是通过查看截图,看起来你使用了另一个正则表达式而不是你引用的正则表达式:上面的正则表达式既不匹配D1:AM也不D1:PM匹配)
| 归档时间: |
|
| 查看次数: |
835 次 |
| 最近记录: |