R-将函数应用于正则表达式匹配
假设我有这样一个字符串:R-将函数应用于正则表达式匹配,r,regex,gsub,R,Regex,Gsub,假设我有这样一个字符串: txt <- "This is an example of a Tweet with a #HashTag." txt 如果可能的话,上面的函数会将hashtag分解为组成词,如果不是因为它包含所有大写字母,则会将其标记为组成词 我该怎么做?如果有更好的方法,我也愿意这样做。tweet\u preprocessor=function(tweets\u txt){ tweet_preprocessor = function(tweets_txt) { pp_h
txt <- "This is an example of a Tweet with a #HashTag."
txt
如果可能的话,上面的函数会将hashtag分解为组成词,如果不是因为它包含所有大写字母,则会将其标记为组成词
我该怎么做?如果有更好的方法,我也愿意这样做。tweet\u preprocessor=function(tweets\u txt){
tweet_preprocessor = function(tweets_txt) {
pp_hashtag = function(hashtag) {
hashtag = substring(hashtag, 2)
paste("<hashtag>", ifelse(
grepl("^[[:upper:]]+$", hashtag),
paste(hashtag, "<allcaps>"),
gsub("(?<!^)(?=[A-Z])", " ", hashtag, perl = T)
))
}
gr = gregexpr("#\\w+", tweets_txt, perl = T)
mat = regmatches(tweets_txt, gr)
regmatches(tweets_txt, gr) = lapply(mat, pp_hashtag)
tweets_txt
}
pp_hashtag=函数(hashtag){
hashtag=子字符串(hashtag,2)
粘贴(“”,如果有(
grepl(“^[:upper:][]+$”,hashtag),
粘贴(标签“”),
gsub(“(?您希望得到什么结果?。您能显示您的预期输出吗?您的代码返回”这是一个带有哈希标记的Tweet示例。“
-这是预期输出吗?我尝试了另一种解决方案,得到了”这是一个带有哈希标记的Tweet示例。“
。请澄清是否需要将#
替换为
,然后在每个大写字母前插入空格,但第一个大写字母除外?”?
tweet_preprocessor = function(tweets_txt) {
pp_hashtag = function(hashtag) {
hashtag = substring(hashtag, 2)
paste("<hashtag>", ifelse(
grepl("^[[:upper:]]+$", hashtag),
paste(hashtag, "<allcaps>"),
gsub("(?<!^)(?=[A-Z])", " ", hashtag, perl = T)
))
}
gr = gregexpr("#\\w+", tweets_txt, perl = T)
mat = regmatches(tweets_txt, gr)
regmatches(tweets_txt, gr) = lapply(mat, pp_hashtag)
tweets_txt
}