我需要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"