如何使用正则表达式将长逗号分隔线分成多行?

时间:2015-06-24 14:23:35

标签: regex string

例如,

10005405,10007427,10013143,10018261,10026779,10041983,10045944,10052764,10053811,10062245,10062622,10066137,10077736,10082699,10083445,10085236,10092302,10095033,10095418,10099802,10110845,10112006,10116347,10119290,10122777,10122801,10125570,10127001,10137994,10140286,10144926,10153467,10155223,10157239,10159865,10166802,10174209,10174222,10179916,10181016,10190031,10192009,10198388,10199815,10200465,10204981,10218630,10225519,10226708,10226858,10237037,10243127,10243556,10247312,10247886,10256462,10270174,10271611,10273654,10273863,10279670,10280581,10285558,10315831,........

实际上输入很长。

我需要通过用\n换行符替换每个,比如说第10个逗号来将这一行分成多行。我做了很少的正则表达式,但不值得。甚至没有得到第10个逗号,忘记找到每个出现的那个,然后替换!

我的意思是我对正则表达式知之甚少,比如匹配一串10个字符等,但这是不可思议的,所以我决定接受帮助。在这个意义上的正则表达式,我以为我将在Sublime文本等中使用..或者任何其他想法就足够了。它不是严格的编程问题。

为何选择正则表达式?我认为这可以通过编程方式以及编辑器等方式应用。你能救我一下吗?

1 个答案:

答案 0 :(得分:1)

  

用'\ n'换行符替换每个,比方说,第10个逗号

使用以下正则表达式和替换:

查找内容:((?:[^,]*,){9}[^,]*), 替换为:$1\n

请参阅demo

正则表达式解释

  • ((?:[^,]*,){9}[^,]*) - 匹配9个序列(由于$1 limiting quantifier)非逗号({9} - 带有[^,]*量词的否定character class,意思是 0或更多次出现),后跟逗号,然后是1个非逗号序列然后
  • * - 逗号

请注意,我使用引擎“记住”的1 capturing group,)(我们将使用替换字符串中的存储值)并且 - 因为我需要另一个group以确保匹配模式的9次出现 - 一个非捕获组((...)),它不是由正则表达式引擎“记住”的(因为我们以后不需要反向引用它)。 / p>