我的问题几乎与我之前在这里找到的条目相同但不完全相同。
我需要解析文本文件,其中数据的结构是这样的:
文件中的每个项目都以#
开头,后跟标签。
帖子中的字段由一个或多个空格分隔。
这是我遇到问题的部分。 每个字段可能会也可能不会被引号括起来,只有在数据包含空格时才需要它。
所以我所追求的是一个按空格分割的正则表达式,但如果该空格在引号内则不是。
目前我正在为每个标签使用单独的正则表达式,但是当从文件中读取时立即将其拆分会更有效。
至于(^#[A-z]+)\s([0-9]+)\s(.+)
数据示例
#ACCOUNT 7059 "Misc. travelexpenses"
#ADRESS "M. Jackson" "somewhere over the rainbow" WI53233-1704 555-12345
答案 0 :(得分:0)
您可以使用“OR”构造来定义字段的可能形式。 像
([A-z]+|"[^"]+")
匹配Kring和“Kring先生”。
修改:因此,要获取上述记录中的所有字段和标签,您可以使用
(?:^#|\s+)([^"#\s]+|"[^"]+")
http://gskinner.com/RegExr/是测试正则表达式的好方法。