我正在尝试使用子功能将包裹编号与混乱的字符串变量隔离。包裹中的包裹号由前面的“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

07-24 14:39