C ++ Regex Справка для создания кода для замены специального символа среди букв (все буквы, но не последние) - PullRequest
0 голосов
/ 07 марта 2019

если я использую этот код:

  std::string s ("ABCDE");
  std::regex e ("([A-Z])");   

  // using string/c-string (3) version:
  std::cout << std::regex_replace (s,e,"$1|");

мой вывод:

A|B|C|D|E|

но я хочу только:

A|B|C|D|E

Помогите мне, пожалуйста, с кодом C ++

Ответы [ 3 ]

1 голос
/ 07 марта 2019
"ABCDE".gsub(/(.)(?!\z)/, '\1|')
 #=> "A|B|C|D|E"

Регулярное выражение совпадает с любым символом и сохраняет его для захвата группы 1. Затем следует отрицательный запрос, который не позволяет следовать за совпадением в конце строки.Каждое совпадение заменяется содержимым группы захвата 1, за которой следует канал.

1 голос
/ 07 марта 2019

Не используйте для этого регулярное выражение.

str = "ABCDE"
puts str.chars.join("|") # => A|B|C|D|E
0 голосов
/ 07 марта 2019

ок, все, это решение

  std::string s ("ABCDE");
  std::regex e ("(.)(?!$)");  
  std::cout << std::regex_replace (s,e,"$1|");

вывод:

A|B|C|D|E

thx Кэри Свовеланд, я привык (?!. $), И это не сработало, потому чтоРаньше я ".",Увидев ваш скрипт, я понял ошибку, очевидно, она также работает с ([AZ])

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