Есть ли одно регулярное выражение для замены числа в списке с разделителями? - PullRequest
2 голосов
/ 27 июля 2010

У меня есть строка, которая может варьироваться от пустой строки до произвольного списка чисел, разделенных запятыми. Например: "1,2,3"

К сожалению, когда я пишу код для удаления элемента, у меня есть куча операторов if - главным образом для обработки, если это первый, последний или единственный элемент в списке. Я продолжаю думать, что должен быть лучший путь!

Например, мне нужно было бы удалить элемент '2' в следующих списках:

"1,2,3"
"1,3,2"
"2,1,3"
"2"
"12,2,21"
""

Ответы [ 2 ]

1 голос
/ 27 июля 2010

Это должно делать то, что вы хотите:

/(\b|,)2(\b|,)/
0 голосов
/ 04 февраля 2012

Удаление (см. Замену ниже)

Я не смог найти простое одиночное выражение для удаления, поэтому, кажется, лучше всего просто сопоставить каждый шаблон в последовательности:

echo "x,x,1,x,2,x,x" | sed -e 's/,x,/,/g;  s/^x,//;  s/,x$//;  s/^x$//'

Немного многословно, но очень читабельно.

Замена

echo "x,x,1,x,2,x,x" | sed -e 's/,x,/,y,/g;  s/^x,/y,/;  s/,x$/,y/;  s/^x$/y/'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...