使用R替换字符串中元素的位置

Wan*_*ang 0 string replace r

我有一个字符串:

str = 'Mr[5]'
Run Code Online (Sandbox Code Playgroud)

我想切换的位置Mr,并5str,并得到这样的结果:

result = '[5]Mr'
Run Code Online (Sandbox Code Playgroud)

我怎么能在R中这样做?

cde*_*erv 6

您可以使用具有2个匹配组的正则表达式,您可以为其更改位置. stringr包有助于角色操纵.

s <- c("Mr[5]", "Mr[3245]", "Mrs[98j]")
stringr::str_replace_all(s, "^(.*)(\\[.*\\])$", "\\2\\1")
#> [1] "[5]Mr"    "[3245]Mr" "[98j]Mrs"
Run Code Online (Sandbox Code Playgroud)

关于正则表达式

  • ^是字符串和$结尾的开头
  • .* 匹配每个字符,零个或多个时间
  • ()定义匹配组
  • \\[\\]匹配文字括号
  • 你有一个简单的正则表达式匹配例程Mr然后[5]:"(.*)(\\[.*\\])"
  • \\1指第一个匹配组,\\2指第二个匹配组.\\2\\1逆组

显然,您可以创建一个更符合您需求的更好的正则表达式.具有匹配组的机制保持不变.regex101是一个很好的网站,可以帮助您使用正则表达式.在R,stringr网站有关于正则表达式的很好的介绍