簡體   English   中英

使用正則表達式匹配在R中的字符串中進行模式查找

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM