[英]R regex remove apostroph except the ones preceded and followed by letter
我正在清理文本,我想刪除任何撇號,除了之前和之后的字母,如:我是,我會,他......等等。
我有以下初步解決方案,處理很多案例,但我想要一個更好的案例:
rmAps <- function(x) gsub("^\'+| \'+|\'+ |[^[:alpha:]]\'+(a-z)*|\\b\'*$", " ", x)
rmAps("'i'm '' ' 'we end' '")
[1] " i'm we end "
我也嘗試過:
(?<![a-z])'(?![a-z])
但我想我仍然想念......
gsub("'(?!\\w)|(?<!\\w)'", "", x, perl = TRUE)
#[1] "i'm we end "
刪除角色后面沒有單詞字符的情況: '(?!\\\\w)
。
刪除角色前面沒有單詞字符的情況: (?<!\\\\w)'
。
如果出現上述任何一種情況,你想要刪除它,所以'(?!\\\\w)|(?<!\\\\w)'
應該可以解決問題。 請注意, \\\\w
包含下划線,並根據需要進行調整。
另一種選擇是
gsub("\\w'\\w(*SKIP)(*FAIL)|'", "", x, perl = TRUE)
在這種情況下,您匹配'
被單詞字符包圍的任何實例: \\\\w'\\\\w
,然后強制該匹配失敗(*SKIP)(*FAIL)
。 但是,也要尋找'
使用|'
。 結果是只會出現'
未包裝在單詞字符中”並將其替換掉的情況。
您可以使用以下正則表達式:
(?<=\w)'(?=\w)
(?<=)
是一個積極的看法。 內部的所有內容需要在下一個選擇器之前匹配 (?=)
是一個積極的前瞻。 內部的所有內容都需要在前一個選擇器之后匹配 \\w
任何字母數字字符和下划線 如果要限制結果,也可以將\\w
切換到例如[a-zA-Z]
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.