我的问题与我在此处找到的较早条目几乎相同,但不完全相同。
我需要解析一个文本文件,其中的数据结构如下:
文件中的每一项都以 #
开头,后跟标签。
帖子中的字段由一个或多个空格分隔。
这是我遇到问题的部分。 每个字段可能会或可能不会被引号括起来,只有当数据包含空格时才需要。
所以我想要的是一个由空格分隔的正则表达式,但如果该空格在引号内则不会。
目前我正在为每个标签使用一个单独的正则表达式,然后从文件中读取时立即拆分它会更有效率。
至于下面的帐户示例 (^#[A-z]+)\s([0-9]+)\s(.+)
数据示例
#ACCOUNT 7059 "Misc. travelexpenses"
#ADRESS "M. Jackson" "somewhere over the rainbow" WI53233-1704 555-12345
最佳答案
您可以使用“OR”结构来定义字段的可能形式。 喜欢
([A-z]+|"[^"]+")
同时匹配 Kring 和“Mr. Kring”。
编辑:因此,要获取上述记录中的所有字段和标签,您可以使用
(?:^#|\s+)([^"#\s]+|"[^"]+")
http://gskinner.com/RegExr/是测试正则表达式的好方法。
关于c# - 文本解析和拆分文本,包括/不包括引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2332573/