我正在尝试使用 sub 函数将包裹编号与困惑的字符串变量隔离开来。包裹号码在字符串中由前面的“ParNum:”标识,所需号码周围的字符各不相同,但它们遵循这两个示例的一般形式。
string1 <- "Legal Description: PrpId:0511552031 ParNum:0511552031 CC:05 T:7 R:8"
string2 <- "Legal Description: Rmrk:PT OF PrpId:0511552031 ParNum:0511552031 CC:05 T:7 R:8"
惨遭失败的努力:
> sub("[^:]*:)*[^:]*:", "", string1)
[1] "0511552031 ParNum:0511552031 CC:05 T:7 R:8"
期望的结果:
0511552031
最佳答案
尝试在 sub
中使用以下模式:
.*ParNum:([^[:blank:]]*).*
这与 ParNum:
匹配,然后捕获 ParNum:
后面的任何非空格/制表符。然后,捕获的数字将在第一个捕获组中以 \\1
形式提供。
代码片段:
string1 <- "Legal Description: PrpId:0511552031 ParNum:0511552031 CC:05 T:7 R:8"
sub(".*ParNum:([^[:blank:]]*).*", "\\1", string1)
[1] "0511552031"
Demo
关于r - 如何使用常见的前置模式从字符串中提取字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47587210/