Регулярное выражение, которое требует кавычек, если есть пробелы - PullRequest
0 голосов
/ 19 июня 2019

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

Я хочу сопоставить такие вещи, как:

model.field:if(eql?"This String")

Обратите внимание, что "This String" может быть любой строкой. Однако он может содержать только буквы, цифры и подчеркивания. Если пробелов нет, кавычки действительно не нужны. Таким образом,

model.field:if(eql?ThisString) 

является действительным совпадением.

1 Ответ

0 голосов
/ 19 июня 2019
str = 'model.field:if(eql?"This String")'
  #=> "model.field:if(eql?\"This String\")" 
substring = '"This String"'
  #=> "\"This String\"" 

r = /#{substring}/
  #=> /"This String"/
str.match?(r)
  #=> true

См. Соответствует строка #? . Если вы хотите вернуть всю строку, если есть совпадение (иначе nil), используйте следующее:

r = /.*#{substring}.*/
  #=> /.*"This String".*/ 
str[r]
  #=> "model.field:if(eql?\"This String\")"

См. Строка # [] . Это регулярное выражение гласит: «соответствовать нулю или более символам (.*), за которыми следует подстрока ("This String"), за которыми следуют ноль или более символов (.*).

Обратите внимание, что

str = 'model.field:if(eql?"This String")'

совпадает с

str = "model.field:if(eql?\"This String\")"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...