我试图从这个模式中提取状态——在本例中是"活动"一词:
状态\n活动\n某地\
使用这个正则表达式:https://regex101.com/r/xegX00/1,但我无法使用str\u extract使其在R中工作.有双重逃生似乎很奇怪,但我在这里try 了所有可能的组合,但都无法实现.感谢您的帮助!
mutate(status=str_extract(df, "(?<=Status\\\\n)(.*?)(?=\\\\)"))
我试图从这个模式中提取状态——在本例中是"活动"一词:
状态\n活动\n某地\
使用这个正则表达式:https://regex101.com/r/xegX00/1,但我无法使用str\u extract使其在R中工作.有双重逃生似乎很奇怪,但我在这里try 了所有可能的组合,但都无法实现.感谢您的帮助!
mutate(status=str_extract(df, "(?<=Status\\\\n)(.*?)(?=\\\\)"))
您的正则表达式失败,因为您针对错误的文本进行了测试.
"Status\nActive\nHometown"
是表示(定义、表示)以下plain text的string literal:
Status
Active
Hometown
In regular expression testers, you need to test against plain text!
要匹配换行符,可以使用"\n"
(即换行符、LF字符)或"\\n"
,这是一个与换行符匹配的正则表达式转义.
您可以使用
library(stringr)
x <- "Status\nActive\nHometown\n"
stringr::str_extract(x, "(?<=Status\\n).*") ## => [1] "Active"
## or
stringr::str_extract(x, "(?<=Status\n).*") ## => [1] "Active"
请参见R demo online和correct regex test.
注意,在模式末尾不需要\n
,因为在ICU正则表达式风格中(在R stringr
正则表达式方法中使用),.
模式匹配除换行符以外的任何字符,所以只需使用.*
匹配整行即可.