r语言 - 在多个换行符中查找匹配



我需要KPRMILL从下面的文本。模式首先查找:和单个空格,然后跟着所需的文本(直到第一个换行n)

x <- "n        n            NSE: KPRMILLn        n        n            | n            BSE: 532889n        n        n        | INDUSTRY : TEXTILESn        | SECTOR : TEXTILES, APPARELS & ACCESSORIESn        "

我能够通过str_extract()和str_replace()的组合来解决这个问题,寻找有效的解决方案。

x %>% str_extract("[.*?:]\s+(.*?\n)") %>% str_replace("(:\s+)(.*)\n","\2")

您可以使用regex lookaround来查找模式之前和/或之后的文本,而不需要在返回的文本中包含(?<=abc)qu+x表示"查找并返回前面有abc">qu+x;类似地,qu+x(?=abc)表示*"查找并返回qu+x,当它后面跟着abc时。

str_extract(x, "(?<=: )(.*)(?=n)")
# [1] "KPRMILL"

我推断您只需要x中的第一个模式,因为有四个。如果你想要其他的,使用str_extract_all:

str_extract_all(x, "(?<=: )(.*)(?=n)")
# [[1]]
# [1] "KPRMILL"                          "532889"                          
# [3] "TEXTILES"                         "TEXTILES, APPARELS & ACCESSORIES"

最新更新