2013-03-28 2 views
0

Привет У меня есть код SQL, который я пытаюсь разобрать и извлечь текст.regex extract substring

CREATE OR REPLACE VIEW the_view_name as 

Я хочу, чтобы текст между REPLACE VIEW и AS, который не включает в себя ведущие или завершающие пробелы.

На данный момент я получаю всю партию с /REPLACE\s*VIEW(.*?)\s*AS/gi.

Благодаря

ответ

3

Попробуйте сделать это:

echo 'CREATE OR REPLACE VIEW the_view_name as' | 
    perl -lne '/replace\s+view\s+(.*?)\s+as\b/i && print "[$1]"' 
[the_view_name] 

Вы можете использовать это регулярное выражение тоже в вашем случае:

/replace\s+view\s+(\S+)\s+as\b/i 

См perldoc perlrebackslash

\S : Character class for non whitespace 
+0

$ sqlline = ~ /replace\s+view\s+(.*?)\s+as \ B/I; $ viewname = $ 1; print "viewname: $ viewname \ n"; – jaybee

+0

Wut? Что вы имеете в виду ? –

+1

все хорошо; вот что я в итоге использовал. Мне просто нужно 1 доллар – jaybee

0

Вы в настоящее время отсутствует пробел после VIEW, и если вы хотите все, кроме пространства, то ваша группа захвата должна быть ([^\s]*), который будет собирать все вплоть до пространства.

+0

Благодаря ЗАМЕНЯЕТСЯ \ с * VIEW \ s * ([^ \ s] *) дает мне REPLACE VIEW the_view_name. Я все еще только после 'the_view_name' – jaybee