我正在寻找正则表达式,我可以忽略仅仅所有特殊章程组合的字符串。
实施例
List<string> liststr = new List<string>() { "a b", "c%d", " ", "% % % %" ,"''","&","''","'"}; etc...
我需要这个结果
{ "a b", "c%d"}
答案 0 :(得分:1)
您也可以使用它来匹配不带任何Unicode 字母的字符串:
var liststr = new List<string>() { "a b", "c%d", " ", "% % % %", "''", "&", "''", "'" };
var rx2 = @"^\P{L}+$";
var res2 = liststr.Where(p => !Regex.IsMatch(p, rx2)).ToList();
输出:
我还建议使用private static readonly
选项创建正则表达式对象作为Compiled
字段,以便不影响性能。
private static readonly Regex rx2 = new Regex(@"^\P{L}+", RegexOptions.Compiled);
... (and inside the caller)
var res2 = liststr.Where(p => !rx2.IsMatch(p)).ToList();
答案 1 :(得分:0)
答案 2 :(得分:0)
您可以使用非常简单的正则表达式
Regex regex = new Regex(@"^[% &']+$");
其中
[% &']
是您希望包含的特殊字符列表示例强>
List<string> liststr = new List<string>() { "a b", "c%d", " ", "% % % %" ,"''","&","''","'"};
List<string> final = new List<string>();
Regex regex = new Regex(@"^[% &']+$");
foreach ( string str in liststr)
{
if (! regex.IsMatch(str))
final.Add(str);
}
将输出
final = {"a b", "c%d"}