Как я могу игнорировать начальные нули при захвате регулярных выражений?

#regex #regex-negation

#регулярное выражение #отрицание регулярных выражений

Вопрос:

У меня есть база данных, которая содержит идентификатор, такой как

         ID
000000000000000000000PBC_1164321
00000000000000000000000RP_395954
00000000000000000000000MOP_395954
00000000000000000000000395954
  

Я хочу получать только данные после начальных 0
примерно так:

 ID
PBC_1164321
RP_395954
MOP_395954
395954
  

Я тестирую его на https://regexr.com . Я пытался использовать ^(0*) , но он выбирает все 0. Я хочу противоположное этому, не выбирать все начальные 0, а все после него. Пожалуйста, помогите.

Я не использую какой-либо язык, такой как Python и R. Просто хочу использовать регулярное выражение для выбора / сопоставления чего-либо, кроме ведущих 0

Комментарии:

1. Попробуйте с sub помощью . Вы можете указать начало строки ( ^ ), за которым следует 0 или более 0, и заменить его на "" , sub(^0*", "", df1$ID)

2. Вы можете попробовать шаблон "^0*" по вашей ссылке — все, что делает ссылка, — это сопоставление регулярных выражений. Возможно, вам захочется многое сделать с совпадениями регулярных выражений — извлечь их, извлечь всю строку, если есть совпадение, вернуть логическое значение, если есть совпадение, заменить совпадение и т.д. sub это функция R, которая заменяет (заменяет) совпадение. Хороший способ удалить 0s — заменить 0s ничем "" . Это то, что предлагает акрун.

3. Хситидж, ты пробовал? sub("^0*", "", "00000000000000000000000MOP_395954") возвращает "MOP_395954" именно то, что вы запрашивали.

4. ([^0].*) должно сработать для вас @KshitijYadav

5. @Toto, пожалуйста, прочтите остальные комментарии, прежде чем закрывать это как обман. OP специально спросил о том, как сделать это без python / R, и хотя мне не ясно, что это значит, это предполагает, что необходимо больше деталей, прежде чем знать, что это дубликат.

Ответ №1:

Вы можете сопоставить текст после начальных нулей, используя ([^0].*)

Ответ №2:

Использование /[A-Z1-9].*/gi [A-Z1-9] будет соответствовать любому символу в A-Z 1-9, по сути, не 0, точка соответствует любому символу, а звезда соответствует ему 0 или более раз. Теги совпадают глобально и не чувствительны к регистру.

Сначала я попытался использовать решение, похожее на @Codelessbugging, но не смог заставить сайт правильно его обработать.

Ссылка на это решение
Ссылка на решение CodelessBugging

Комментарии:

1. Я думаю, что codeless и ваш оба правы. Поскольку программное обеспечение, которое я использую, выполняет интерпретацию по одной строке за раз, оно смогло проанализировать его с помощью того, что представил codeless.