c# - 正则表达式:解析街道名称/号码

标签 c# .net regex parsing

C#/.NET 2.0

我需要解析一个字符串,其中包含街道名称和房屋编号的两个独立值。

in: "Streetname 1a"         out:  "streetname"  "1a"
    "Street name 1a"              "street name" "1a"
    "Street name 1 a"             "street name" "1 a"

我的第一个选择是在我发现 ""字符的地方拆分字符串,但这不适用于第二种情况。

result[0] = trimmedInput.Substring(0, splitPosition).Trim();
result[1] = trimmedInput.Substring(splitPosition + 1).Trim();

最好的方法是什么?我可以使用正则表达式吗?

谢谢

最佳答案

^(.+)\s(\S+)$ 应该可以解决问题

编辑:如果门牌号中不能有空格,这将起作用。否则这个问题无法以编程方式解决,因为程序永远不会知道字符串标记的语义。

房屋地址凌乱且不一致。我处理过地址数据,老实说,如果您没有规范化形式的数据,那您基本上就完蛋了。

^(.+)\s(\d+(\s*[^\d\s]+)*)$ 将涵盖更多情况,但像这样的模式是一 jar 如果我见过蠕虫的话。

关于c# - 正则表达式:解析街道名称/号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5014537/

相关文章:

regex - 如何在单个正则表达式中匹配葡萄牙车牌?

c# - 如何从 C# 中的对象实例获取自定义属性

c# - 从其他窗口获取 ListView 项目文本

.net - 在 VB.NET 中保存数千个文件的最快方法?

c# - 没有安装 Entity Framework 驱动程序的 DMS?

Java:使用带有多个分隔符的 split 函数

javascript - "/\((.*)\)/"和 "/\(([^\)]*)\)/"之间有区别吗?

c# - List.Contains 上的索引越界

c# - 在 lock() 中执行 foreach 时修改列表

c# - 跨越一组文本框的验证