在多个换行符中查找匹配项
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"
我需要以下文本中的 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"