[英]Pattern lookup within a string in R using regular expression matching
我正在嘗試在特定字符串及其各自位置中選擇模式。 我在下面用一個例子解釋:
String = "Web_797-Web_797-Web_797-Web_797-PCP_IM_PAR-Pharm_1-Pharm_1-
Web_797-PCP_IM_PAR-Prior_OP-Web_797-Prior_OP-Event_0-"
pattern = "Web_797-*Web_797" (Web_797 followed by Web_797 with anything in between)
我使用了以下功能:
str_locate_all(String,pattern)[[1]]
我得到以下結果:
start end
[1,] 1 15
[2,] 17 31
這是我部分需要的。 但是,我該模式無法選擇以下組合(以黑色突出顯示)。
字符串=“ Web_797-Web_797-Web_797-Web_797-PCP_IM_PAR-Pharm_1-Pharm_1- Web_797-PCP_IM_PAR-Prior_OP-Web_797 -Prior_OP-Event_0-”
如果有人可以提供幫助,我將不勝感激。 我認為我定義模式但無法修復的方式有問題。
模式pattern = "Web_797-*Web_797"
是-*
部分。 這意味着零個或多個破折號(-)。 我相信您想要的是破折號后跟任何字符。 因此,第一個(不正確的)嘗試將是pattern = "Web_797-.*Web_797"
其中。 表示“任何字符”。 但這並不完全正確。 您只希望收集字符,直到下次看到Web_797為止,而不是一直收集到最后一次看到Web_797為止。 默認情況下,匹配為“貪婪”,采用最大可能匹配。 如果我們使用pattern = "Web_797-.*?Web_797"
則? 關閉貪婪匹配,使其僅匹配到下一個Web_797。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.