簡體   English   中英

使用正則表達式刪除第一次出現的特殊字符,直到 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM