regex R:删除以“.htm”结尾的所有单词

lrpiutwd  于 2022-11-26  发布在  其他
关注(0)|答案(5)|浏览(153)

我有一个df = desc,其中包含一个变量“value”,该变量包含长文本,我想删除该变量中以“.htm”结尾的每个单词。我在这里和正则表达式中找了很长时间,但没有找到解决方案。
有人能帮忙吗?非常感谢!
我试过了

library(stringr)
desc <- str_replace_all(desc$value, "\*.htm*$", "")

但我得到:

Error: '\*' is an unrecognized escape in character string starting ""\*"
yhived7q

yhived7q1#

此正则表达式:

  • 将捕获以.htm结尾的所有内容
  • 使用.html捕获示例
  • 不依赖于是否位于字符串的开头/结尾。
strings <- c("random text shouldbematched.htm notremoved.html matched.htm random stuff")

gsub("\\w+\\.htm\\b", "", strings)

输出量:

[1] "random text  notremoved.html  random stuff"
gt0wga4j

gt0wga4j2#

我不知道你到底想完成什么,但我猜其中之一是你正在寻找的:

words <- c("apple", "test.htm", "friend.html", "remove.htm")

# just replace the ".htm" from every string
str_replace_all(words, ".htm", "")

# exclude all words that contains .htm anywhere
words[!grepl(pattern = ".htm", words)]

# exlude all words that END with .htm
words[substr(words, nchar(words)-3, nchar(words)) != ".htm"]
mjqavswn

mjqavswn3#

我不确定是否可以使用 * 来告诉R考虑字符串中的任何值,所以我会首先删除它。另外,在代码中,您正在对变量“value”进行更改,以替换整个df。
因此,我建议如下:

desc$value <- str_replace(desc$value, ".htm", "")

通过这样做,您将告诉R删除desc$value变量中的所有.htm。我希望它能起作用!

lnvxswe2

lnvxswe24#

我们假设你有一个变量“value”,它包含长文本,你想删除所有以.html结尾的单词,基于这些假设,你可以使用str_remove all
这里的要点是将模式 Package 成单词边界标记\\b

library(stringr)
str_remove_all(value, "\\b\\w+\\.html\\b")
[1] "apple  and test2.html01" "the word  must etc. and  as well" "we want to remove .htm"

数据来源:

value <- c("apple test.html and test2.html01", 
           "the word friend.html must etc. and x.html as well", 
           "we want to remove .htm")
1cosmwyk

1cosmwyk5#

要实现你想要的只是做:

desc$value <- str_replace(desc$value, ".*\\.htm$", "")

你试图逃离星星,但这是无用的。你得到一个错误,因为\*不存在于R字符串中。你只有\n\t等...
\.在R字符串中也不存在。但是\\存在,并且它在正则表达式的结果字符串中产生一个\。因此,当你在R正则表达式中转义某个内容时,你必须转义它两次:
在我的正则表达式中:.*表示任意字符,\\.表示一个真实的点。我必须转义它两次,因为\需要先从R字符串中转义。

相关问题