Ruby Regex测试值是否为有效格式

Ruby Regex测试值是否为有效格式,ruby,regex,Ruby,Regex,我有一项任务,需要检查CSV列中的值是否正确引用: 案例: 没有报价-好的 “带引号”-好的 “开场白-不好 不恰当的“报价”-不好 结束报价“-不好 CSV标记错误,如下所示: Illegal quoting in line 5. (CSV::MalformedCSVError) 问题:如何使用单个正则表达式使其工作?我需要为案例3-5标记错误 如果您知道CSV值是否有效,应该检查什么,请告诉我 编辑:我在下面添加了两个场景/案例: “引用”内部引用-不好 “引号”“内部引号”-不好 编辑:

我有一项任务,需要检查CSV列中的值是否正确引用:

案例:

  • 没有报价-好的
  • “带引号”-好的
  • “开场白-不好
  • 不恰当的“报价”-不好
  • 结束报价“-不好
  • CSV标记错误,如下所示:

    Illegal quoting in line 5. (CSV::MalformedCSVError)
    
    问题:如何使用单个正则表达式使其工作?我需要为案例3-5标记错误

    如果您知道CSV值是否有效,应该检查什么,请告诉我

    编辑:我在下面添加了两个场景/案例:

  • “引用”内部引用-不好
  • “引号”“内部引号”-不好
  • 编辑:又添加了一个案例:

  • ”“好的

  • 不考虑转义引号:

    /^("[^"]*"|[^"]+)$/m
    
    看到了

    这意味着:

    • 行首
      • 1报价+除报价+1报价以外的任何报价,或
      • 除引号以外的任何内容(至少一个字符)
    • 行尾

      • 不考虑转义引号:

        /^("[^"]*"|[^"]+)$/m
        
        看到了

        这意味着:

        • 行首
          • 1报价+除报价+1报价以外的任何报价,或
          • 除引号以外的任何内容(至少一个字符)
        • 行尾
        ^{1}.+{1}$| ^[^]*$

        这将匹配以一个引号开头和结尾的所有行,或完全不包含引号的行。
        ^{1}.+{1}$| ^[^]*$

        这将匹配以一个引号开头和结尾的所有行,或完全不包含引号的行。

        分享你的研究成果对每个人都有帮助。告诉我们你尝试了什么,以及为什么它不能满足你的需要。这表明你花了时间来帮助自己,它避免了我们重复显而易见的答案,最重要的是它帮助你得到更具体和相关的答案!另请参见:你的csv格式如何处理引用的报价?我看到了
        双引号或
        \”
        转义引号。@ThomasAyoub我只是在这个@SebastianProske上做了反复试验,它处理
        而没有escapes@SebastianProske+1这是一个很好的问题,但CSV并不认为它是有效的,甚至使用
        \“
        分享你的研究成果对每个人都有帮助。告诉我们您尝试了什么,以及为什么它不能满足您的需求。这表明你花了时间来帮助自己,它使我们避免重复显而易见的答案,最重要的是,它帮助你得到一个更具体和相关的答案!另请参见:csv格式如何处理引号?我看到了
        双引号或
        \”
        转义引号。@ThomasAyoub我只是在这个@SebastianProske上做了反复试验,它处理
        而没有escapes@SebastianProske+1这是一个好问题,但CSV并不认为它是有效的,甚至用
        \”转义
        我发现您的答案最简单,最接近我的需要,谢谢!但现在,我又增加了3个案例,请检查更新的问题。案例6和案例7都可以。。我只是对案例8有个问题,
        应该是有效的。我发现你的答案最简单,最接近我需要的,谢谢!但现在,我又增加了3个案例,请检查更新的问题。案例6和案例7都可以。。我只是对案例8有个问题,
        应该是有效的。谢谢你的回答。直到我在上面添加了最后一个案例#8(更新的问题)之前,它似乎是正确的。我对它进行了定制,以更改
        +
        ->
        *
        ,并且它在
        ^{1}.*{1}$| ^[^]*$
        中起作用。感谢您的回答。在上面添加了最后一个案例#8(更新的问题)之前,它似乎是正确的我定制了它来更改
        +
        ->
        *
        ,它工作起来了
        ^{1}.*{1}$|^[^]*$