Регулярное выражение для извлечения всех слов, начинающихся с двоеточия - PullRequest
3 голосов
/ 13 октября 2009

Я хотел бы использовать регулярное выражение для извлечения параметров «связать переменную» из строки, содержащей оператор SQL. В Oracle параметры имеют префикс двоеточия.

Например, вот так:

SELECT * FROM employee WHERE name = :variable1 OR empno = :variable2

Можно ли использовать регулярное выражение для извлечения «variable1» и «variable2» из строки? То есть, получить все слова, которые начинаются с двоеточия и заканчиваются пробелом, запятой или концом строки.

(Мне все равно, если я получу одно и то же имя несколько раз, если одна и та же переменная использовалась несколько раз в инструкции SQL; я могу разобраться с этим позже.)

Ответы [ 4 ]

4 голосов
/ 13 октября 2009

Это может сработать:

:\w+

Это просто означает "двоеточие, за которым следует один или несколько символов класса слов ".

Это, очевидно, предполагает, что у вас есть POSIX-совместимая система регулярных выражений, которая поддерживает синтаксис класса слов.

Конечно, это соответствует только одной такой ссылке. Чтобы получить оба, и пропустить шум, что-то вроде этого должно работать:

(:\w+).+(:\w+)
3 голосов
/ 13 октября 2009

Чтобы справиться с таким простым делом самостоятельно, вам нужно взглянуть на regex quickstart .

А пока используйте:

:\w+
1 голос
/ 13 октября 2009

Если ваш анализатор регулярных выражений поддерживает границы слов,

:[a-zA-Z_0-9]\b
0 голосов
/ 13 октября 2009

Попробуйте следующее:

sed -e 's/[ ,]/\\n/g' yourFile.sql | grep '^:.*$' | sort | uniq

при условии, что ваш SQL находится в файле с именем "yourFile.sql".

Это должно дать список переменных без дубликатов.

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