R语言中提取字符串逗号间内容并与首段拼接的正则表达式求解
R语言正则提取并拼接字符串的解决方案
嘿,这个需求咱们用R的sub()函数配合正则就能轻松实现,一步到位拿到你想要的结果。
首先看原字符串定义:
word <- 'Fu Tien Mansion, Taikoo Shing, Hong Kong'
直接用下面的代码就能完成提取和拼接:
result <- sub("^(.*?),\\s*(.*?),\\s*.*$", "\\2 \\1", word) # 输出结果 print(result) # [1] "Taikoo Shing Fu Tien Mansion"
正则表达式拆解
咱们来拆解一下这个正则的逻辑,方便你理解:
^:锚定字符串的起始位置(.*?):第一个捕获组,非贪婪匹配从开头到第一个逗号前的所有内容(也就是Fu Tien Mansion),\\s*:匹配第一个逗号,以及逗号后面可能存在的任意空白字符(比如空格)(.*?):第二个捕获组,同样非贪婪匹配第一个逗号后到第二个逗号前的内容(也就是Taikoo Shing),\\s*.*$:匹配第二个逗号、后续空白字符,以及字符串剩下的所有内容直到结尾- 替换部分
\\2 \\1:把第二个捕获组的内容放在前面,用空格分隔,再接第一个捕获组的内容,正好实现你要的顺序调换拼接
如果你担心字符串里的空白不固定,这个正则也能适配,因为\\s*会匹配0个或多个空白字符,鲁棒性不错。
内容的提问来源于stack exchange,提问作者Wingyan Yip
相关产品推荐
相关产品推荐

