Я абсолютно плохо знаком с regex, и я был бы очень признателен за любую справку.
Задача проста. У меня есть файл CSV с записями, которые читают как это:
12345,67890,12345,67890
12345,67890,12345,67890
12345,67890,12345,67890
12345,67890,12345,67890
12345,67890,12345,67890
Я хотел бы заменить первую запятую пространством и остальной частью отпуска неповрежденных запятых для каждой строки. Существует ли regex выражение, которое будет только соответствовать первой запятой?
Я попробовал это: ^.....,
. Это соответствует запятой, однако, она также соответствует всей длине строки, предшествующей запятой, поэтому если я пытаюсь заменить это пространством, все числа удалены также.
Шаблон соответствия мог быть:
^([^,]+),
Это означает
^ starts with
[^,] anything but a comma
+ repeated one or more times (use * (means zero or more) if the first field can be empty)
([^,]+) remember that part
, followed by a comma
В, например, жемчуг, целое соответствие и замена были бы похожи:
s/^([^,]+),/\1 /
Сменная деталь просто берет все это, которое соответствовало и заменяет ее первым блоком, Вы помнили и добавляете пространство. Кома "отбрасывается", потому что это не находится в первой группе фиксации.