使用正则表达式查找特定格式的字段

时间:2008-12-10 23:04:02

标签: c# .net regex

在我正在开发的应用程序中,有人认为在csv文件的值中包含逗号是明智的。所以我要做的就是选择这些值,然后从这些值中删除逗号。但我建立的正则表达式与任何东西都不匹配。

正则表达式模式为: .*,\"<money>(.+,.+)\",?.*

我想要匹配的值是2700, 2650 and 2600 in "2,700","2,650","2,600"

2 个答案:

答案 0 :(得分:2)

CSV中允许使用逗号,如果使用文本限定符(通常是双引号“),则不应导致问题。

以下是详细信息:http://en.wikipedia.org/wiki/Comma-separated_values

关于正则表达式:

此代码适用于您的示例数据(但只允许使用一个逗号,基本上只有数千个分隔数字,最高可达999,999):

string ResultString = null;
try {
    ResultString = Regex.Replace(myString, "([0-9]{1,3})(?:(,)?([0-9]{3})?)", "$1$3");
} catch (ArgumentException ex) {
    // Syntax error in the regular expression
}

需要这样:

  

测试12,205 26,000测试。那种   我想要匹配的价值观   2700,2650和2600 in   “2700”, “2650”, “2600”

并产生这个:

  

测试12205 26000测试。那种   我想要匹配的价值观   2700 2650和2600 in   “2700”, “2650”, “2600”

答案 1 :(得分:0)

感谢Ryan的回答。我应该多检查一下我的脾气。尽管如此,CSV中的逗号仍然没有分隔价值?

在办公室询问后,我指向了一个免费的Regex设计器应用程序,我用它来构建我需要的模式。该申请是Rad Software Regular Expression Designer

哦,为了答案的目的,我出来的模式是: \"(?<money>[0-9,.$]*)\"

编辑:Final Andwer

哇。完全忘记了这个问题。我更多地玩了正则表达式,并推出了一款能够满足我所需要的东西。正则表达式是:

\"([0-9.$]+(,[0-9.]+)+)\"

正则表达式能够匹配我引用的双引号中的任何deciaml字符串。