簡體   English   中英

正則表達式替換特殊字符

[英]Regex replace special character

我的正則表達式需要幫助。

我需要刪除文本開頭的特殊字符

例如,我有這樣的文字

.just a $#text this should not be incl#uded

輸出應該是這樣的

just a text this should not be incl#uded

我一直在測試我的正則表達式,但我不能讓它工作

([\!-\/\;-\@]+)[\w\d]+

如何限制正則表達式僅檢查以特殊字符開頭的文本?

謝謝

使用\\B[!-/;-@]+\\s*\\b

var result = Regex.Replace(s, @"\B[!-/;-@]+\s*\b", "");

請參閱正則表達式演示

細節

  • \\B - 除了單詞邊界之外的位置(必須在當前位置的左側立即開始字符串或非單詞字符)
  • [!-/;-@]+ - 1個或多個ASCII標點符號
  • \\s* - 0+空白字符
  • \\b - 字邊界,當前位置右側必須有一個字母/數字/下划線。

如果您打算刪除所有標點符號和符號,請使用

var result = Regex.Replace(s, @"\B[\p{P}\p{S}]+\s*\b", "");

另一個正則表達式演示

請注意\\p{P}匹配任何標點符號, \\p{S}匹配任何符號。

使用前瞻:

(^[.$#]+|(?<= )[.$#]+)

^[.$#]+用於匹配行首的特殊字符。

(?<= )[.$#]+)用於匹配句子中單詞開頭的特殊字符。

根據需要在角色組[]添加特殊字符。

以下是您的問題詳細信息中的兩個可能選項。 希望它會對你有所幫助。

string input = ".just a $#text this should not be incl#uded";

//REMOVING ALL THE SPECIAL CHARACTERS FROM THE WHOLE STRING    
string output1 = Regex.Replace(input, @"[^0-9a-zA-Z\ ]+", "");

// REMOVE LEADING SPECIAL CHARACTERS FROM EACH WORD IN THE STRING. WILL KEEP OTHER SPECIAL CHARACTERS     
var split = input.Split();
string output2 = string.Join(" ",  split.Select(s=> Regex.Replace(s, @"^[^0-9a-zA-Z]+", "")).ToArray());

負向前瞻在這里很好:

(?![\.\$#].*)[\S]+

https://regex101.com/r/i0aacp/11/

[\\S]匹配任何角色

(?![\\.\\$#].*)否定前瞻意味着那些字符[\\S]+不應該以任何\\.\\$# [\\S]+開頭\\.\\$#

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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