簡體   English   中英

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

[英]replace positions of elements in a string using R

我有一個字符串:

str = 'Mr[5]'

我想切換Mr5str的位置,並得到如下結果:

result = '[5]Mr'

我如何在R中做到這一點?

您可以使用帶有2個匹配組的正則表達式來更改位置。 stringr包有助於字符操作。

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

關於正則表達式

  • ^是字符串的開頭, $是結尾
  • .*匹配零個或多個時間的每個字符
  • ()定義匹配組
  • \\\\[\\\\]匹配文字括號
  • 在一起,您有一個簡單的正則表達式,可以匹配例如[5] Mr"(.*)(\\\\[.*\\\\])"
  • \\\\1表示第一個匹配組, \\\\2表示第二個匹配組。 \\\\2\\\\1反轉組

顯然,您可以創建一個完全適合您需要的更好的正則表達式。 具有匹配組的機制保持不變。 regex101是一個可以幫助您使用regex的好網站。 在R中, stringr網站對正則表達式有很好的介紹

您可以使用gsub

values <- c("Mr[5]","Mr[1234]", "Mrs[456]")
values2 <- gsub("^(.+)(\\[[0-9]+\\])$", "\\2\\1", values)

# > values2
# [1] "[5]Mr"    "[1234]Mr" "[456]Mrs"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM