2013-11-07 3 views
3

Скажем, у меня есть строка, как это: «1,2,3,11»Regex для удаления элемента из строки, разделенной запятой?

Простое регулярное выражение, как это будет найти число в строке: (?<=^|,)1(?=,|$) - это будет правильно найти «1» (т.е. нет. первый «1» в «11»).

Однако, чтобы удалить номер из строки, оставляя строку правильно отформатированную запятые между каждым номером, мне нужно, чтобы включить один смежная запятой только. Например, сопоставление 1,, 2, или ,11.

Таким образом, фокус в том, чтобы соответствовать один запятой, на либо стороне числа, но игнорировать запятой на противоположной стороне (если таковой имеется). Может кто-то помочь мне с этим?

Ed: Следует упомянуть, что это необходимо сделать в коде, не используя внешние инструменты.

+0

http://regex101.com/r/pN2fD6? – Passerby

+0

Итак, вы хотите совместить предыдущую запятую и номер, но оставить запятую? – hwnd

ответ

4

, чтобы удалить номер из строки, оставляя строку правильно отформатированный с запятыми между каждым номером

Используйте следующую команду: regex и замените на пустую строку.

\b1\b,|,\b1\b$ 

Использование sed

sed -e 's/\b1\b/,/g' -e 's/,,//g' 
+0

Спасибо, но я делаю это на языке программирования, поэтому не могу использовать инструмент командной строки. –

+0

@ componentful_15939 вы можете сделать тот же 2 уровня анализа на любом языке программирования, который поддерживает поиск и замену. Какой язык bdw? – jkshah

+0

@ component_15939 Отметьте обновленные ан. – jkshah

0

для 3 (например), вы можете использовать (с заменой):

/\b3\b,?/ 
Смежные вопросы