【发布时间】:2011-11-11 16:02:06
【问题描述】:
我正在尝试将以下正则表达式从 Java 转换为 .NET:
(?i:(?:([^\d,]+?)\W+\b((?:CA|SD|SC|CT|DC)\b)?\W*)?(\d{5}(?:[- ]\d{3,4})?)?)
当我对以下字符串进行匹配时:
Mountain View, CA 94043
在 Java 中使用 Pattern 和 Matcher 对象,它使用值填充四个组:
"Mountain View, CA 94043"
"Mountain View"
"CA"
"94043"
但是,在 .NET 中,有两个匹配项。第一个匹配用这些值填充四个组:
"Mountain "(there is a space on the end of group 0)
"Mountain"
""
""
第二个匹配用这些值填充三个组:
"View, CA 94043"
"View"
"CA"
"94043"
我还尝试了使用 Java 和 .NET 模式的 RegexBuddy 表达式,在 RegexBuddy 中,这两种模式都像 .NET 版本一样工作。
谢谢大家!
【问题讨论】: