регулярное выражение с закрывающей скобкой не работает - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть строка:

Lorem ipsum....
aws_oracle_ext.get_package_variable('THIS','IS','A');
Lorem ipsum....
aws_oracle_ext.get_package_variable
('THIS','IS','B')    Lorem ipsum....  aws_oracle_ext.get_package_variable('THIS'
   ,'IS','C')    Lorem ipsum....  aws_oracle_ext.get_package_variable
    ('THIS'
     ,'IS',
     'D');
Lorem ipsum....

Я хочу grep значения:

aws_oracle_ext.get_package_variable('THIS','IS','A')
aws_oracle_ext.get_package_variable('THIS','IS','B')
aws_oracle_ext.get_package_variable('THIS','IS','C')
aws_oracle_ext.get_package_variable('THIS','IS','D')

Я пытался с регулярным выражением:

 ^aws_oracle_ext.get_package_variable.*\)$

, но это не сработало. Не могли бы вы сказать мне, что не так?

1 Ответ

0 голосов
/ 10 апреля 2020

Я вижу следующие проблемы с вашим регулярным выражением.

  1. Имеет якоря ^ и $, что предотвращает совпадение подстрок в выражении.

  2. В имени нет точки с запятой регулярное выражение, но есть во входе, рассмотрите добавление ;? к вашему регулярному выражению.

  3. Вам нужно несколько флагов, чтобы позволить вашему регулярному выражению соответствовать многострочным строкам, что зависит от языковая среда, которую вы используете. (например, JavaScript, PHP, Perl, POSIX)

  4. Также отмечается в комментариях, вам необходимо исключить ) из части регулярного выражения, соответствующей аргументам. Вы должны изменить .* на [^)]*.

Наконец, регулярное выражение само по себе не изменяет соответствующую строку. Сначала необходимо найти подстроку, которую вы хотите извлечь, а затем выполнить подстановку, чтобы удалить ненужные символы (например, <newline> и <space>).

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