Textparsing和splitting包含/不包括引号的文本

时间:2010-02-25 08:23:38

标签: c# regex quotes escaping

我的问题几乎与我之前在这里找到的条目相同但不完全相同。

我需要解析文本文件,其中数据的结构是这样的: 文件中的每个项目都以#开头,后跟标签。 帖子中的字段由一个或多个空格分隔。

这是我遇到问题的部分。 每个字段可能会也可能不会被引号括起来,只有在数据包含空格时才需要它。

所以我所追求的是一个按空格分割的正则表达式,但如果该空格在引号内则不是。

目前我正在为每个标签使用单独的正则表达式,但是当从文件中读取时立即将其拆分会更有效。 至于(^#[A-z]+)\s([0-9]+)\s(.+)

下面的帐户示例

数据示例

#ACCOUNT 7059 "Misc. travelexpenses"
#ADRESS "M. Jackson" "somewhere over the rainbow" WI53233-1704 555-12345

1 个答案:

答案 0 :(得分:0)

您可以使用“OR”构造来定义字段的可能形式。 像

([A-z]+|"[^"]+") 

匹配Kring和“Kring先生”。

修改:因此,要获取上述记录中的所有字段和标签,您可以使用

(?:^#|\s+)([^"#\s]+|"[^"]+")

http://gskinner.com/RegExr/是测试正则表达式的好方法。