[英]remove the word in a string before first occurrence of hyphen or underscore in R
[英]Remove first occurrence of special characters until the first word or word character in R using regex
對於我的項目,我正在考慮根據特殊字符的模式刪除部分文本。 我有一個具有以下結構的 long.txt 文件:
mycharobj=c("---------Some text is here.---------More text is here - [3548]----- Even more text is here.-----------More text is here - [408]--------- Even more text is here again.")
字符串繼續遵循上述模式。
我的目標是刪除以- and end - [number]
的部分,例如:
"-----------------------More text is here - [3548]"
"-----------More text is here - [408]"
我打算使用以下內容來刪除這些部分(將來會循環使用)
library(stringr)
library(qdapRegex)
temp=unlist(regmatches(mycharobj, gregexpr("[[:digit:]]+", mycharobj)))
mycharobj=rm_between(mycharobj, "-", paste(temp[1],"]", sep=""))
但為此,我需要一個正則表達式,它將刪除文本中第一次出現的"-----------"
,直到第一個單詞或單詞字符。 如果字符串以文本(單詞或單詞字符)開頭,它需要忽略這一點並識別"-----------"
的第一次出現,以便我的潛在循環工作。
我想知道這是否可以用正則表達式來完成? 任何幫助表示贊賞。 我對此有一個計算要求很高的解決方案; 根據特殊字符“-”拆分字符串,然后通過一組條件識別我需要的文本部分。 但是由於它需要更多的處理時間,因此該解決方案對於處理大量此類.txt 文件的可擴展性不是很高。
您可以使用
gsub("-{9,}(?:(?!-{9}).)*?- \\[\\d+]", "", mycharobj, perl=TRUE)
請參閱正則表達式演示。
詳情:
-{9,}
- 九個或更多-
字符(?:(?.-{9})?)*
- 任何一個字符,除了換行符之外,零個或多個但盡可能少的出現,它不會以九個連字符字符序列開頭- \[
- 一個- [
字符串\d+
- 一位或多位數字]
- 一個]
字符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.