This question already has an answer here:
How to use back reference with stringi package?
(1个答案)
4年前关闭。
大多数
我正在写一个快速的正则表达式,将驼峰式大小写转换为间隔的单词。
我很困惑为什么这可行:
而且,这不是:
(1个答案)
4年前关闭。
大多数
stringr
函数只是对应的stringi
函数的包装。 str_replace_all
是其中之一。但是我的代码无法与stri_replace_all
(对应的stringi
函数)一起使用。我正在写一个快速的正则表达式,将驼峰式大小写转换为间隔的单词。
我很困惑为什么这可行:
str <- "thisIsCamelCase aintIt"
stringr::str_replace_all(str,
pattern="(?<=[a-z])([A-Z])",
replacement=" \\1")
# "this Is Camel Case ain't It"
而且,这不是:
stri_replace_all(str,
regex="(?<=[a-z])([A-Z])",
replacement=" \\1")
# "this 1s 1amel 1ase ain't 1t"
最佳答案
如果查看stringr::str_replace_all
的源代码,您会看到它调用fix_replacement(replacement)
将\\#
捕获组引用转换为$#
。但是对stringi:: stri_replace_all
的帮助也清楚地表明,您对捕获组使用了$1
,$2
等。
str <- "thisIsCamelCase aintIt"
stri_replace_all(str, regex="(?<=[a-z])([A-Z])", replacement=" $1")
## [1] "this Is Camel Case aint It"
关于r - 在str_replace/stri_replace中使用捕获的组-stringi vs stringr ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39036688/
10-10 06:26