Regex&;C#:替换除表情符号外的所有特殊字符
本文关键字:符号 特殊字符 amp 替换 Regex | 更新日期: 2023-09-27 17:57:30
我需要替换字符串中的所有特殊字符,除了以下字符(包括字母字符):
- :)
- :P
- ;)
- :D
- :(
这就是我现在拥有的:
string input = "Hi there!!! :)";
string output = Regex.Replace(input, "[^0-9a-zA-Z]+", "");
这将替换所有特殊字符。我如何修改它以不替换提到的字符(表情符号),而是替换任何其他特殊字符?
您可以使用一种已知的技术:匹配并捕获您需要的内容,只匹配您想要删除的内容,并替换为对Group 1:的反向引用
(:(?:[D()P])|;'))|[^0-9a-zA-Z's]
替换为$1
。注意,我在字符类中添加了's
,但如果不需要空格,请将其删除
查看regex演示
模式解释:
(:(?:[D()P])|;'))
-第1组(我们需要保留的内容)::(?:[D()P])
-一个:
,后跟D
、(
、)
或P
|
-或;')
-一个;)
子串- (在这里,您可以使用更多
|
分隔的分支来扩展捕获组)
|
-或[^0-9a-zA-Z's]
-匹配除ASCII数字、字母(和空格之外的任何字符,但正如我所提到的,如果不需要保留空格,您可以删除's
)
我会使用RegEx来匹配所有表情符号,并从文本中选择它们
string input = "Hi there!!! :)";
string output = string.Concat(Regex.Matches(input, "[;|:][D|P|)|(]+").Cast<Match>().Select(x => x.Value));
图案[;|:][D|P|)|(]+
[;|:]
以:或开头;
[D|P|)|(]
以D、p结尾)或(
+
一个或多个