多诺这个正则表达式正在做什么
(?>[^\,]*\,){3}([^\,]*)[\']?
(?>[^\,]*\,){4}([^\,]*)[\']?
Run Code Online (Sandbox Code Playgroud)
任何人都可以在deatil中解释我更多
有一个很棒的网站http://regex101.com满足这些需求!它描述了常规并允许您测试和调试它们.
你的那些匹配像4(第二个5)的值,用逗号分隔,并将最后一个作为一个符号匹配组返回:
(?>...)是原子团体.在他们匹配后,他们不会永远离开它.
[^\,] 匹配除逗号以外的任何字符[^\,]*\, 表示任何数字(甚至为零)的非逗号字符,然后是单个逗号(?>[^\,]*\,){3} 意味着这样做超过3次([^\,]*)[\']?意味着一个单词没有逗号作为一个组,可能还有一个逗号.例如,在1,,333,4,5第一个匹配1,,333,4,并返回4匹配组.第二个将找到1,,333,4,5并5作为组.
编辑:更多描述.
正则表达式有组.这些是可以有数字量词的部分或正则表达式 - 重复它们的次数({3})和一些选项.此外,在常规匹配后,我们可以找出每个组匹配的内容.
原子的,少说话,尽可能多地前进,永不回头.而且,它们不能像前面所描述的那样被观看.由于性能原因,它们仅在此处使用.
因此,我们需要将逗号分隔值中的第4个单词作为一个组.我们会这样做:
{3})一个原子组((?>...)):
*任何非逗号字符的任意数量的字符([^\n])
[^...] 指除了描述之外的任何符号.\,)将该单词与下一个单词分开(...))
[^\,]*\,?或[\,]?)
,请带它? 之前是0或1组,这里是单个逗号.因此,它从第一个原子组中的第一个单词开始,全部取出,然后使用逗号.之后,重复2次.用逗号表示第3个单词.
在那之后,一个非原子组取第4个字.
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |