[英]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.