在多个换行符中查找匹配项

Find match in multiple line breaks

我需要以下文本中的 KPRMILL。模式首先找到 : 和一个 space,然后是所需的文本(直到第一个换行符 \n

x <- "\n        \n            NSE: KPRMILL\n        \n        \n            | \n            BSE: 532889\n        \n        \n        | INDUSTRY : TEXTILES\n        | SECTOR : TEXTILES, APPARELS & ACCESSORIES\n        "

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

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

您可以使用正则表达式 lookaround 查找模式 之后 and/or 之前的文本,而无需 将它们包含在 returned 文本中。 (?<=abc)qu+x表示"查找和returnqu+x时前面有abc";类似地,qu+x(?=abc) 表示*"找到 return 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"