R 中的正则表达式 - 删除最后一个符号后的所有内容
Regular expression in R - remove everything after last symbol
使用下面的列 RelatedToText
,我想创建 2 个新列 Coverage_Type
和 Name
。
如果能找到最后一个“-”号前后的内容,我想我应该可以了。但是,如果您看到最后一种情况,则在名称的各个部分之间有一个“-”符号,即在 Mayur 和 Cook 之间。
我的问题有两个:首先,我应该如何提取最后一个“-”符号前后的内容?其次,如果名称本身包含上面引用的破折号,我应该如何正确提取内容?
RelatedToTxt Coverage_Type Name
Collision - NAWADA REALTY, INC Collision NAWADA REALTY, INC
Collision - Don Cooks Collision Don Cooks
Pro Dam - Veh - Spl Lt - Raj Perk Pro Dam - Veh - Spl Lt Raj Perk
Rental Reimbursement - Mayur-Cook Rental Reimbursement Mayur-Cook
示例数据:
RelatedToTxt <- c("Collision - NAWADA REALTY, INC", "Collision - Don Cooks",
"Pro Dam - Veh - Spl Lt - Raj Perk", "Rental Reimbursement - Mayur-Cook")
尝试使用 strsplit
将文本分成两列。您可以使用此正则表达式拆分最后的 " - "
:.+\K\s-\s
。 .+\K
使用贪婪模式 .+
来尽可能多地匹配,然后在匹配 space-连字符-[= 之前使用 \K
丢弃已经匹配的内容24=] 模式。 .+
的贪婪性允许它跳过 "Pro Dam - Veh - Spl Lt" 中的连字符。
strsplit(RelatedToTxt, ".+\K\s-\s", perl = TRUE)
#[[1]]
#[1] "Collision" "NAWADA REALTY, INC"
#
#[[2]]
#[1] "Collision" "Don Cooks"
#
#[[3]]
#[1] "Pro Dam - Veh - Spl Lt" "Raj Perk"
#
#[[4]]
#[1] "Rental Reimbursement" "Mayur-Cook"
输出可以变成两列
do.call(rbind, strsplit(RelatedToTxt, ".+\K\s-\s", perl = TRUE))
使用下面的列 RelatedToText
,我想创建 2 个新列 Coverage_Type
和 Name
。
如果能找到最后一个“-”号前后的内容,我想我应该可以了。但是,如果您看到最后一种情况,则在名称的各个部分之间有一个“-”符号,即在 Mayur 和 Cook 之间。
我的问题有两个:首先,我应该如何提取最后一个“-”符号前后的内容?其次,如果名称本身包含上面引用的破折号,我应该如何正确提取内容?
RelatedToTxt Coverage_Type Name
Collision - NAWADA REALTY, INC Collision NAWADA REALTY, INC
Collision - Don Cooks Collision Don Cooks
Pro Dam - Veh - Spl Lt - Raj Perk Pro Dam - Veh - Spl Lt Raj Perk
Rental Reimbursement - Mayur-Cook Rental Reimbursement Mayur-Cook
示例数据:
RelatedToTxt <- c("Collision - NAWADA REALTY, INC", "Collision - Don Cooks",
"Pro Dam - Veh - Spl Lt - Raj Perk", "Rental Reimbursement - Mayur-Cook")
尝试使用 strsplit
将文本分成两列。您可以使用此正则表达式拆分最后的 " - "
:.+\K\s-\s
。 .+\K
使用贪婪模式 .+
来尽可能多地匹配,然后在匹配 space-连字符-[= 之前使用 \K
丢弃已经匹配的内容24=] 模式。 .+
的贪婪性允许它跳过 "Pro Dam - Veh - Spl Lt" 中的连字符。
strsplit(RelatedToTxt, ".+\K\s-\s", perl = TRUE)
#[[1]]
#[1] "Collision" "NAWADA REALTY, INC"
#
#[[2]]
#[1] "Collision" "Don Cooks"
#
#[[3]]
#[1] "Pro Dam - Veh - Spl Lt" "Raj Perk"
#
#[[4]]
#[1] "Rental Reimbursement" "Mayur-Cook"
输出可以变成两列
do.call(rbind, strsplit(RelatedToTxt, ".+\K\s-\s", perl = TRUE))