[英]How to replace a character in a string using RegEx in R
I am trying to replace a certain character in string but as this pattern is recurring I have thought to replace this iteratively using RegExes if it's even possible. 我正在尝试替换字符串中的某个字符但是由于这种模式反复发生,我曾想过如果可能的话,使用RegExes迭代替换它。 For example consider a link http://www.bbc.co.uk/food/ingredients/by/letter/a 例如,请考虑链接http://www.bbc.co.uk/food/ingredients/by/letter/a
I want to replace the last 'a' with 'b', then a 'c', a 'd' and so-on till 'z' iteratively. 我想用'b'替换最后的'a',然后用'c','d'替换,直到'z'迭代。 The RegEx to work with this is as simple as: 使用RegEx可以很简单:
http:\\/\\/www\\.bbc\\.co\\.uk\\/food\\/ingredients\\/by\\/letter\\/[az]
this would validate the string but I'd like to automate the process of link generation. 这将验证字符串,但我想自动化链接生成过程。 I am quite new to 'R' and I would like to know if something like this is possible. 我对'R'很新,我想知道这样的事情是否可行。
You can create such a list of links as follows with paste0
: 您可以使用paste0
创建如下链接列表:
l <- paste0("http://www.bbc.co.uk/food/ingredients/by/letter/", letters)
which results in the following list: 这导致以下列表:
> l
[1] "http://www.bbc.co.uk/food/ingredients/by/letter/a"
[2] "http://www.bbc.co.uk/food/ingredients/by/letter/b"
[3] "http://www.bbc.co.uk/food/ingredients/by/letter/c"
[4] "http://www.bbc.co.uk/food/ingredients/by/letter/d"
[5] "http://www.bbc.co.uk/food/ingredients/by/letter/e"
[6] "http://www.bbc.co.uk/food/ingredients/by/letter/f"
[7] "http://www.bbc.co.uk/food/ingredients/by/letter/g"
[8] "http://www.bbc.co.uk/food/ingredients/by/letter/h"
[9] "http://www.bbc.co.uk/food/ingredients/by/letter/i"
[10] "http://www.bbc.co.uk/food/ingredients/by/letter/j"
[11] "http://www.bbc.co.uk/food/ingredients/by/letter/k"
[12] "http://www.bbc.co.uk/food/ingredients/by/letter/l"
[13] "http://www.bbc.co.uk/food/ingredients/by/letter/m"
[14] "http://www.bbc.co.uk/food/ingredients/by/letter/n"
[15] "http://www.bbc.co.uk/food/ingredients/by/letter/o"
[16] "http://www.bbc.co.uk/food/ingredients/by/letter/p"
[17] "http://www.bbc.co.uk/food/ingredients/by/letter/q"
[18] "http://www.bbc.co.uk/food/ingredients/by/letter/r"
[19] "http://www.bbc.co.uk/food/ingredients/by/letter/s"
[20] "http://www.bbc.co.uk/food/ingredients/by/letter/t"
[21] "http://www.bbc.co.uk/food/ingredients/by/letter/u"
[22] "http://www.bbc.co.uk/food/ingredients/by/letter/v"
[23] "http://www.bbc.co.uk/food/ingredients/by/letter/w"
[24] "http://www.bbc.co.uk/food/ingredients/by/letter/x"
[25] "http://www.bbc.co.uk/food/ingredients/by/letter/y"
[26] "http://www.bbc.co.uk/food/ingredients/by/letter/z"
Extract the directory name (ie everything before /a) and then append each letter using the built-in variable letters
: 提取目录名称(即/ a之前的所有内容),然后使用内置变量letters
附加每个letters
:
u <- "http://www.bbc.co.uk/food/ingredients/by/letter/a" # input string
file.path(dirname(u), letters)
which gives this character vector: 它给出了这个字符向量:
[1] "http://www.bbc.co.uk/food/ingredients/by/letter/a"
[2] "http://www.bbc.co.uk/food/ingredients/by/letter/b"
[3] "http://www.bbc.co.uk/food/ingredients/by/letter/c"
[4] "http://www.bbc.co.uk/food/ingredients/by/letter/d"
[5] "http://www.bbc.co.uk/food/ingredients/by/letter/e"
[6] "http://www.bbc.co.uk/food/ingredients/by/letter/f"
[7] "http://www.bbc.co.uk/food/ingredients/by/letter/g"
[8] "http://www.bbc.co.uk/food/ingredients/by/letter/h"
[9] "http://www.bbc.co.uk/food/ingredients/by/letter/i"
[10] "http://www.bbc.co.uk/food/ingredients/by/letter/j"
[11] "http://www.bbc.co.uk/food/ingredients/by/letter/k"
[12] "http://www.bbc.co.uk/food/ingredients/by/letter/l"
[13] "http://www.bbc.co.uk/food/ingredients/by/letter/m"
[14] "http://www.bbc.co.uk/food/ingredients/by/letter/n"
[15] "http://www.bbc.co.uk/food/ingredients/by/letter/o"
[16] "http://www.bbc.co.uk/food/ingredients/by/letter/p"
[17] "http://www.bbc.co.uk/food/ingredients/by/letter/q"
[18] "http://www.bbc.co.uk/food/ingredients/by/letter/r"
[19] "http://www.bbc.co.uk/food/ingredients/by/letter/s"
[20] "http://www.bbc.co.uk/food/ingredients/by/letter/t"
[21] "http://www.bbc.co.uk/food/ingredients/by/letter/u"
[22] "http://www.bbc.co.uk/food/ingredients/by/letter/v"
[23] "http://www.bbc.co.uk/food/ingredients/by/letter/w"
[24] "http://www.bbc.co.uk/food/ingredients/by/letter/x"
[25] "http://www.bbc.co.uk/food/ingredients/by/letter/y"
[26] "http://www.bbc.co.uk/food/ingredients/by/letter/z"
Another option: 另外一个选项:
library(stringi)
v <- "http://www.bbc.co.uk/food/ingredients/by/letter/a"
stri_replace_last(v, letters, regex = "[a-z]")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.