Perl 和 R-lang 中已知开始和结束字符的正则表达式
Regex for known start and end characters in Perl and R-lang
我希望匹配用户名中提到的 foo。我需要能够匹配以“@”开头并在该用户名内的任何位置包含单词 'foo' 并以 space 或语法结尾的文本字符串。
我需要能够匹配:
示例 1:@anycharacterhere_foo,此处还有其他内容
示例 2:@foo_anymorecharacters 这里
我希望像这样使用 stringr 库:
str_extract_all(x, perl("?<=@"))
没看懂的是match all
函数
假设您的用户名没有特殊字符:
x <- "@anycharacterhere_foo, anything else here"
username <- str_extract_all(x, "\w*(foo)\w*")
这会生成一个包含您的用户名的字符串。这将在剩余的字符串中获取额外的 foos
,但您可以使用 str_extract
而不是全部来修复它。我不确定您是否真的需要字符串中的所有 foo 或只是示例数据中开头的用户名。您还可以通过包含 @ 来限制所有匹配项,因此:
username <- str_extract_all(x, "\@\w*(foo)\w*")
您需要查找前面或后面的 "zero or more" 个单词字符:
x <- '@anycharacterhere_foo @foo_anymorecharacters here anything else here'
str_extract_all(x, '@\w*foo\w*')[[1]]
# [1] "@anycharacterhere_foo" "@foo_anymorecharacters"
如果您不想包含标记:
str_extract_all(x, '(?<=@)\w*foo\w*')[[1]]
# [1] "anycharacterhere_foo" "foo_anymorecharacters"
您也可以为此使用 qdapRegex 包中的 rm_tag
:
library(qdapRegex)
rm_tag(x, extract=TRUE)[[1]]
# [1] "@anycharacterhere_foo" "@foo_anymorecharacters"
我希望匹配用户名中提到的 foo。我需要能够匹配以“@”开头并在该用户名内的任何位置包含单词 'foo' 并以 space 或语法结尾的文本字符串。
我需要能够匹配:
示例 1:@anycharacterhere_foo,此处还有其他内容
示例 2:@foo_anymorecharacters 这里
我希望像这样使用 stringr 库:
str_extract_all(x, perl("?<=@"))
没看懂的是match all
函数
假设您的用户名没有特殊字符:
x <- "@anycharacterhere_foo, anything else here"
username <- str_extract_all(x, "\w*(foo)\w*")
这会生成一个包含您的用户名的字符串。这将在剩余的字符串中获取额外的 foos
,但您可以使用 str_extract
而不是全部来修复它。我不确定您是否真的需要字符串中的所有 foo 或只是示例数据中开头的用户名。您还可以通过包含 @ 来限制所有匹配项,因此:
username <- str_extract_all(x, "\@\w*(foo)\w*")
您需要查找前面或后面的 "zero or more" 个单词字符:
x <- '@anycharacterhere_foo @foo_anymorecharacters here anything else here'
str_extract_all(x, '@\w*foo\w*')[[1]]
# [1] "@anycharacterhere_foo" "@foo_anymorecharacters"
如果您不想包含标记:
str_extract_all(x, '(?<=@)\w*foo\w*')[[1]]
# [1] "anycharacterhere_foo" "foo_anymorecharacters"
您也可以为此使用 qdapRegex 包中的 rm_tag
:
library(qdapRegex)
rm_tag(x, extract=TRUE)[[1]]
# [1] "@anycharacterhere_foo" "@foo_anymorecharacters"