【发布时间】:2017-08-13 22:56:32
【问题描述】:
我正在使用允许输入 CSV 文件的工作流自动化工具(使用 Java 构建)。将手动创建 CSV,并根据填充的列,工作流将执行某些操作。因此,只有在未找到以下条件时,我才需要匹配字符串(一次一个 CSV 行):
- 字符串开头的逗号 [表示缺少第一个值]
- 逗号空格 逗号 [表示缺少中间值]
- 字符串末尾的逗号 [表示缺少最后一个值]
考虑以下要匹配的输入文本
HMSS TN PUPIL EDITION LV 5,HMHSS Ohio PE LV 5-6 Making A New Nation, HMH SCIFSN TN SE G6 2019, CA IMPUSHGGROCONFG8SUBBXCNTLBL, "R180 NG LBOOK TG STG B NAT""L", HMH BIEN DIT TE LV1A/18/1 2018, DTM NOW TE M&D, MD GOMATH SP SE INACTV WKTXT ACC7 2014*, "0158009673, 0158009681, 015800969X, 0158009703"
输入文本规则: 不能以空格开头,不能以空格结尾
这不应该匹配 - 缺少第一个值:
,HMHSS Ohio PE LV 5-6 Making A New Nation, HMH SCIFSN TN SE G6 2019, CA IMPUSHGGROCONFG8SUBBXCNTLBL, "R180 NG LBOOK TG STG B NAT""L", HMH BIEN DIT TE LV1A/18/1 2018, DTM NOW TE M&D, MD GOMATH SP SE INACTV WKTXT ACC7 2014*, "0158009673, 0158009681, 015800969X, 0158009703"
这不应该匹配 - 缺少中间值:
HMHSS Ohio PE LV 5-6 Making A New Nation, , HMH SCIFSN TN SE G6 2019, CA IMPUSHGGROCONFG8SUBBXCNTLBL, "R180 NG LBOOK TG STG B NAT""L", HMH BIEN DIT TE LV1A/18/1 2018, DTM NOW TE M&D, MD GOMATH SP SE INACTV WKTXT ACC7 2014*, "0158009673, 0158009681, 015800969X, 0158009703"
这不应该匹配 - 缺少最后一个值:
HMHSS Ohio PE LV 5-6 Making A New Nation, HMH SCIFSN TN SE G6 2019, CA IMPUSHGGROCONFG8SUBBXCNTLBL, "R180 NG LBOOK TG STG B NAT""L", HMH BIEN DIT TE LV1A/18/1 2018, DTM NOW TE M&D, MD GOMATH SP SE INACTV WKTXT ACC7 2014*, "0158009673, 0158009681, 015800969X, 0158009703",
我尝试过的表达方式:
^(("(?:[^"]|"")*"|[^,]*)(,("(?:[^"]|"")*"|[^,]*))*)$
匹配整个字符串
[-\w\s"/&*]+(,[-\w\s"/&*]+)*
我最近的一次。不捕捉“逗号空格逗号”。 而且我需要将整个输入字符串视为一个整体。
非常感谢您的阅读和帮助!
【问题讨论】:
标签: java regex csv pattern-matching match