#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.