匹配索引(0,1)和索引(1,2)上的重复字符

时间:2016-06-07 09:26:01

标签: ruby regex

我有一个字符串

  

698636235 | 2004-02-19 || UN |

     

713220614 | ||| 2009-10-07

这是我正在尝试加载到MySQL中的管道分隔文件(我知道....)的一部分。

我正在尝试使用正则表达式用\N填充空字段值,以便MySQL插入null。但是,如果有多个字段为空值,则会出现此问题。

我当前的正则表达式是/\|\|/,它匹配双管道的一个实例。此正则表达式将在索引(0,1)处匹配一次。

正则表达式是否可以匹配|||两次?一旦在索引(0,1)和一次在索引(1,2)?

如果不是,我只会写一个正确的循环函数。

1 个答案:

答案 0 :(得分:3)

我建议使用环视:

(?<=^|\||\n)(?=\||$|\n)

它在垂直条与行/文本的开头/结尾(=空字段)之间找到垂直条之间的零宽度空间,

第一部分,正面后顾(?<=会检查我们感兴趣的位置是否以文字开头^,竖线|或新线{开头} {1}}。

第二部分,即前瞻性\n,确保其后跟垂直条,新行或文字结尾(?=

See it here at regex101

修改

根据评论,在行首添加了对空字段的支持。 (不得不检查,但从我可以看到ruby支持后视。原来如果有人需要它在JS:$