Как получить полное совпадение, игнорируя не цифры в регулярном выражении?

#regex #plsql

#регулярное выражение #plsql

Вопрос:

Я пытаюсь получить число из строки, игнорируя все не цифры, такие как запятые, символы и т.д. У меня есть регулярное выражение, подобное этому:

 (?:[d] )
  

Для «45,00%» это приводит к следующему:

 Match 1
Full match  0-2 45
Match 2
Full match  3-5 00
  

Но я хочу полное одиночное совпадение как 4500. Как я могу это сделать?

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

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

2. где находится D ? Я не вижу этого в своем коде

3. Нет, нет, я говорю, что если вы хотите 4500 выйти из 45,00% , то один из способов добиться этого — заменить все не цифры, представленные D пустой строкой.

4. как мне заменить с помощью регулярного выражения? я не использую здесь код Python. Я просто хочу записать число

5. Пожалуйста, укажите полное значение, которое будет отображаться в столбце, для каждой записи.

Ответ №1:

Мы можем попробовать сначала использовать re.findall , чтобы найти все совпадающие процентные строки, затем использовать re.sub против результирующего списка, чтобы удалить десятичный символ:

 input = "Here is one value 45,00% and 12% is another"
matches = re.findall(r'd (?:,d )?%', input)
matches = [re.sub(r'[,%]', '', i) for i in matches]
print(matches)

['4500', '12']
  

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

1. Я не использую python для этого.

2. Тогда с какой стати вы пометили Python? И, если вы не используете Python, то что вы используете?

3. Я использую plsql.