Как сопоставить список / массив в regrex в plsql? - PullRequest
0 голосов
/ 23 апреля 2019

У меня есть некоторый код в plsql, подобный этому

regexp_matches(source_string, pattern)

Я хочу сопоставить исходную строку со списком, скажем, списком символов валюты.У меня уже есть этот список в моем коде Python, я хочу, чтобы вышеуказанная функция возвращала совпадение, если источник начинается с любого из символов валюты (не нескольких символов).Поэтому «345 долларов» должны совпадать, а «abc345» и «$$ 230» - нет.

, пожалуйста, помогите

1 Ответ

1 голос
/ 23 апреля 2019

Используя регулярные выражения, вы можете достичь этого с помощью: ^\$\d+$

Разбивка:
^...$ - соответствует чему-либо между (...) от начала строки (^) до конца строки ($), вам нужно это, чтобы избежать совпадения $$450 (строка начинается с 2 $ вместо 1)
\$ - буквальный символ доллара (должен быть экранирован)
\d - любое число от 0 до 9
\d+ - любое число от 0 до 9, повторенное хотя бы один раз (например, 8, 8735, но не ничего)

Ссылка для тестирования и тренировки: https://regex101.com/r/c3YgQO/1


Так как в комментариях было добавлено больше информации, вот обновление:

Это регулярное выражение: ^(-?([€$]\d+|\d+%))$, кажется, то, что вы ищете.

Разбивка:
-? - соответствует - один раз или не совпадает, что делает его необязательным
(...|\d+%) - совпадения ... или \d+%
\d+% - соответствует хотя бы одному числу, за которым следует один символ процента (%)

Новая тестовая ссылка: https://regex101.com/r/NBzaG1/1

Для сопоставления чисел с десятичной точкой вы можете заменить \d+ на: \d+(\.\d)?\d*

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...