SBH
1
I'm in dire need of your regex expertise. I'd like to find a pair of markdown comments and insert some text between them.
Here are the comments:
<!-- {{Start}} -->
<!-- {{End}} -->
which as a string evaluates to
"<!-- {{Start}} -->\n<!-- {{End}} -->"
.
Here's my desired output after the find and insert:
<!-- {{Start}} -->
Hello World
<!-- {{End}} -->
Any ideas?
Does it have to be regex? Or could you just replace the chunk of string starting with the comment tag ?
# Imports
library(stringr)
test_str <- "<!-- {{Start}} -->\n<!-- {{End}} -->"
to_replace <- "Start}} -->\n<"
stringr::str_replace(test_str, coll(to_replace), "Start}} -->\nHello World!<")
#> [1] "<!-- {{Start}} -->\nHello World!<!-- {{End}} -->"
Created on 2019-08-14 by the reprex package (v0.3.0)
PS - from the docs for stringr::str_replace
, explains use of coll()
Generally, for matching human text, you'll want coll() which respects character matching rules for the specified locale.
2 Likes
SBH
3
This solved it! Thank you.
SBH
4
Also here's how you could do it with regex
to_replace <- "<!-- {{Start}} -->\n<!-- {{End}} -->"
replacement <- "Hello World"
stringr::str_replace(to_replace,
stringr::regex("Start\\}\\} -->.*\\<",dotall = T),
paste0("Start}} -->\\\n",replacement,"<"))
stkrog
5
Or with gsub:
test_str <- "<!-- {{Start}} -->\n<!-- {{End}} -->"
gsub("(<!-- \\{\\{Start\\}\\} -->)(\\n)(<!-- \\{\\{End\\}\\} -->)", "\\1\\\nHello World\\\n\\3", test_str)
system
Closed
6
This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.