Как я могу игнорировать ведущие нули в захвате RegEx?

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

        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

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

akrun 08.04.2019 17:25

Вы можете попробовать это по ссылке, которую я использовал в вопросе. Не распознает "саб"

Kshitij Yadav 08.04.2019 17:26

Там вам нужна ^0*sub функция R.

akrun 08.04.2019 17:26

@akrun ^ 0 * выбирает только 0, я хочу обратное. выбрать все после 0

Kshitij Yadav 08.04.2019 17:29

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

Gregor Thomas 08.04.2019 17:29

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

r2evans 08.04.2019 17:30

Как я могу сделать это без использования каких-либо функций Python или R, таких как «sub» и «Replace». Использовать только регулярное выражение для всего этого? Является ли это возможным?

Kshitij Yadav 08.04.2019 17:30

Regex просто соответствует. Это ничего не делать с совпадением. Вы хотите что-то сделать, поэтому вам нужно больше, чем просто регулярное выражение.

Gregor Thomas 08.04.2019 17:31
([^0].*) должно работать на вас @KshitijYadav
codelessbugging 08.04.2019 17:32

@Грегор, все в порядке, как я могу сопоставить что-либо, кроме ведущих нулей. я на самом деле только этого и хочу

Kshitij Yadav 08.04.2019 17:32

Хситий, ладно, справедливый вопрос. Где вы пытаетесь это сделать? Без R, Python или другого языка программирования вы можете сделать это в notepad или на листе бумаги ... что, очевидно, является сарказмом, и потому что я не знаю большего контекста.

r2evans 08.04.2019 17:32

@CodelessBugging это отлично. Пожалуйста, ответьте на это, я проголосую и закрою этот вопрос.

Kshitij Yadav 08.04.2019 17:34

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

r2evans 08.04.2019 17:34

@KshitijYadav круто, рад, что смог помочь, но, похоже, я не могу ответить, пока вопрос больше не будет помечен как обман

codelessbugging 08.04.2019 17:35

@CodelessBugging, я не думаю, что это дублирующий вопрос. как я могу снять отметку об этом? Есть идеи?

Kshitij Yadav 08.04.2019 17:37

Окей, сделано. Но комментарий о том, что они не используют R или Python, был сказан после того, как я закрыл

Toto 08.04.2019 17:40

@Тото Конечно. Спасибо.

Kshitij Yadav 08.04.2019 17:41

@CodelessBugging, пожалуйста, напишите ответ :)

Kshitij Yadav 08.04.2019 17:41

@Toto, спасибо за повторное открытие. Для протокола: «без использования каких-либо функций Python или R» в 15:30:49Z, ваше закрытие было в 15:32:26Z. Возможно, ему потребовалась минута или около того, чтобы зарегистрироваться на странице... да, это случается со мной часто.

r2evans 08.04.2019 17:46
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
19
759
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

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

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

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

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

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

Kshitij Yadav 08.04.2019 17:55

Другие вопросы по теме