正则表达式模式说明

Mou*_*jan -5 regex

多诺这个正则表达式正在做什么

(?>[^\,]*\,){3}([^\,]*)[\']?
(?>[^\,]*\,){4}([^\,]*)[\']?
Run Code Online (Sandbox Code Playgroud)

任何人都可以在deatil中解释我更多

Lap*_*try 6

有一个很棒的网站http://regex101.com满足这些需求!它描述了常规并允许您测试和调试它们.

你的那些匹配像4(第二个5)的值,用逗号分隔,并将最后一个作为一个符号匹配组返回:

  • (?>...)是原子团体.在他们匹配后,他们不会永远离开它.
    • [^\,] 匹配除逗号以外的任何字符
    • [^\,]*\, 表示任何数字(甚至为零)的非逗号字符,然后是单个逗号
  • (?>[^\,]*\,){3} 意味着这样做超过3次
  • ([^\,]*)[\']?意味着一个单词没有逗号作为一个组,可能还有一个逗号.

例如,在1,,333,4,5第一个匹配1,,333,4,并返回4匹配组.第二个将找到1,,333,4,55作为组.

编辑:更多描述.

正则表达式有.这些是可以有数字量词的部分或正则表达式 - 重复它们的次数({3})和一些选项.此外,在常规匹配后,我们可以找出每个组匹配的内容.

原子的,少说话,尽可能多地前进,永不回头.而且,它们不能像前面所描述的那样被观看.由于性能原因,它们仅在此处使用.

因此,我们需要将逗号分隔值中的第4个单词作为一个组.我们会这样做:

  • 我们需要3次({3})一个原子组((?>...)):
    • 这需要一个单词 - *任何非逗号字符的任意数量的字符([^\n])
      • [^...] 指除了描述之外的任何符号.
    • 还有一个逗号(\,)将该单词与下一个单词分开
  • 现在,我们想要的词开始了.我们开了一个小组((...))
    • 如上所述,这将采取一个词: [^\,]*
  • 可能还有一个逗号,如果有一个(\,?[\,]?) ,请带它
    • ? 之前是0或1组,这里是单个逗号.

因此,它从第一个原子组中的第一个单词开始,全部取出,然后使用逗号.之后,重复2次.用逗号表示第3个单词.

在那之后,一个非原子组取第4个字.