【发布时间】:2019-06-11 05:24:21
【问题描述】:
编辑:
我想在我的文本中的特定未知单词之前放置一个\n。我知道我的文字中第一次出现的未知单词会在“Tree”和“Lake”之间
例如。文字:
text
[1] "TreeRULakeSunWater"
[2] "A B C D"
编辑:
“树”和“湖”永远不会改变,但它们之间的单词总是在变化,所以我不会在我的 regex 中寻找“RU”
我目前在做什么:
if (grepl(".*Tree\\s*|Lake.*", text)) { text <- gsub(".*Tree\\s*|Lake.*", "\n\\1", text)}
我上面所做的问题是gsub 将子所有text 并只留下\nRU。
text
[1] "\nRU"
我也试过了:
if (grepl(".*Tree *(.*?) *Lake.*", text)) { text <- gsub(".*Tree *(.*?) *Lake.*", "\n\\1", text)}
我希望text 在gsub 之后的样子:
text
[1] "Tree \nRU LakeSunWater"
[2] "A B C D"
编辑:
根据 Wiktor Stribizew 的评论,我能够成功地完成 gsub
gsub("Tree(\\w+)Lake", "Tree \n\\1 Lake", text)
但这只会在“RU”位于“Tree”和“Lake”之间的情况下执行 gsub,这是未知单词的第一次出现。未知单词,在这种情况下,“RU”会出现很多次在文本中,当“RU”是一个完整的单词时,我想将\n放在每个出现的“RU”前面。
新的前。文本。
text
[1] "TreeRULakeSunWater"
[2] "A B C RU D"
新的前。我想要的:
text
[1] "Tree \nRU LakeSunWater"
[2] "A B C \nRU D"
任何帮助将不胜感激。如果需要更多信息,请告诉我。
【问题讨论】:
-
感谢您的评论。我已经编辑了我的问题
-
您如何指定如何在文本中识别
RU? 2个连续的大写字母?试试gsub("[[:space:]]*([[:upper:]]{2})[[:space:]]*", " \n\\1 ", text)。 -
那么最后一个例子
RU没有被'Tree'和'Lake'包围 -
我希望我了解您的需求。请检查我的答案。