我试图在Java中提出一个正则表达式,该正则表达式可用于提取给定csv字符串中使用的定界符和限定符。我的想法是不匹配唯一字符串Ill,而是查找最后一个字段,因此在伪代码中,我的正则表达式如下所示:
(match as much of beginning as possible) folowed by
Option 1: (delimiter)(qualifier)(any character)*?(qualifier)(end of string|any linebreak character)
Option 2: (delimiter)((?!reference to delimiter capturing group)[any character])*?(qualifier)(end of string|any linebreak character)
然后我用正则表达式上来:
([\s\S])*((\W)(?!\3)(\W)[\s\S]*?\4($|\R))|((\W)((?!\7)[\s\S])*?($|\R))
第3组是定界符,第4组是限定符,第7组是选项2的定界符。
regex 101 link with nonworking example
我的概念已经是错误的还是仅是正则表达式?
编辑:正如评论中指出的那样,可能会有歧义的行,但是正则表达式不必一次尝试就100%找到定界符/限定符。我可以使用正则表达式来扫描多行以得到结果。这也将在用户定义要导入的数据的简单定义的程序中使用(不包括定界符/限定符)。具体地说,如果即使在多行之后都没有明确的答案,则可用于测试(找到的)定界符中正确的字段数。