Regex Issue в Rails - PullRequest
       3

Regex Issue в Rails

0 голосов
/ 01 апреля 2019

Я сравниваю значения типа данных от ожидаемого значения, которое хранится в базе данных, с фактическим ответом. Я использую приведенный ниже код для проверки значения. Я получаю неопределенную ошибку метода "string_between_markers" при сравнении. Я понял, что нет предопределенного метода, доступного в ожидаемом значении строки. Как вызвать string_between_markers для сравнения регулярных выражений. В DB Pattern регулярное выражение имеет значение ниже Pattern_Regex _ [^ ([0-9] {1,3}). ([0-9] {1,3}). ([0-9] {1,3}). ( [0-9] {1,3})] * * +1001

     def validate_value? (actual_value)
     if expected_value.include? "Pattern_Regex"
      #   get the regex from []
      regex = expected_value.string_between_markers("[","]")

      if expected_value.match(regex)
        result = "Passed"
       end
      end

        #String Between Method
        def string_between_markers marker1, marker2
     self[/#{Regexp.escape(marker1)}(.*?)#{Regexp.escape(marker2)}/m, 1]
      end
         end

1 Ответ

0 голосов
/ 01 апреля 2019

Проблема в том, что вы вызываете метод на String, который не определен правильно.Есть два способа.

Первое решение

def string_between_markers(input, marker1, marker2)
  input[/#{Regexp.escape(marker1)}(.*)#{Regexp.escape(marker2)}/m, 1]
end

, а затем назвать его так:

string_between_markers(expected_value, "[","]")

Второе решение

Создайте файл наподобие lib/ext/string.rb со следующим кодом:

class String
  def string_between_markers(marker1, marker2)
    self[/#{Regexp.escape(marker1)}(.*)#{Regexp.escape(marker2)}/m, 1]
  end
end

Затем в своем коде вам потребуется этот файл, вызвав require 'ext/string' или добавив lib папка для путей автозагрузки.

После этого вы вызываете метод, как вы делали это раньше:

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