我在这里看到了很多关于我的问题和其他网站的例子。但是,似乎没有用。
我正在尝试创建一个简单的地址解析器,并且需要检查地址中的每个单词以推入正确的列。
例如: 我的地址是1234 N MAIN
我需要将每个单词分开。我的数字检查似乎工作正常,但是我的正则表达式的NOT EQUAL部分存在问题。
使用:
if (Regex.IsMatch(words[0], @"^\d+$", RegexOptions.IgnoreCase)
不起作用:
&& (!Regex.IsMatch(words[1], @"(N|S|E|W)", RegexOptions.IgnoreCase)
你会认为这会有效,但它会保持匹配值。
更新:
文字文本比较为我解决了这个问题。
string[] testDir = { "N", "S", "W", "E","NORTH","SOUTH","WEST","EAST","NORTHWEST","NORTHEAST","SOUTHWEST","SOUTHEAST"};
if testDir.Contains(words[1], StringComparer.OrdinalIgnoreCase))
{
strStreetNum = words[0];
strPreDir = words[1];
strStreetName = words[2];
}
else if !testDir.Contains(words[1], StringComparer.OrdinalIgnoreCase))
{
strStreetNum = words[0];
strStreetName = words[1] + " " + words[2];
}
答案 0 :(得分:0)
以下是问题的答案,虽然我不相信这是你遇到的问题的解决方案。
^字符用作括号表达式中的第一个字符时将取消在这些括号中找到的字符集。请参阅http://msdn.microsoft.com/en-us/library/vstudio/ae5bf541(v=vs.100).aspx或http://msdn.microsoft.com/en-us/library/az24scfc(v=vs.110).aspx
例如:如果你想匹配“不是数字”,你可以写[^ 0-9]
如果你想匹配任何不是N,S,E或W的东西你会写[^ NSEW]