我试图删除此字符串中的“Admin”字样
1H|\^&|||ARCHITECT^8.10^F3453010030^H1P1O1R1C1Q1L1|||Admin||||P|1|20150511083525
1D
使用此正则表达式
[^\w\b(Admin\])\b.-]+
,输出为1H|ARCHITECT|8.10|F3453010030|H1P1O1R1C1Q1L1|Admin|P|1|20150511083525|1D
它不会删除管理员字词。
所需的输出:
1H|ARCHITECT|8.10|F3453010030|H1P1O1R1C1Q1L1|P|1|20150511083525|1D
我需要帮助来改善正则表达式:(
答案 0 :(得分:4)
此处无需使用正则表达式。您可以使用Replace功能;
yourString.Replace("Admin|", string.Empty);
如果使用正则表达式对您很重要 - 请尝试以下变体:
Regex r = new Regex(@"\bAdmin|\b");
var output = r.Replace(s, string.Empty);
答案 1 :(得分:3)
基本上你的正则表达式应该是这样的
string input = @"1H|\^&|||ARCHITECT^8.10^F3453010030^H1P1O1R1C1Q1L1|||Admin||||P|1|20150511083525
1D";
string pattern = @"([^\w]*Admin[^\w]*)+|[|\\^&\r\n]+";
string replacement = "|";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(input, replacement);
答案 2 :(得分:1)
这是一个两步解决方案:使用正则表达式(将|
添加到否定字符类)和\bAdmin\b
作为替代(在正则表达式中,它不被视为字符序列) ,但字符类中的单个字符a
,d
...,\b
匹配退格符号,而不是单词边界)以替换|
然后加入回来了:
var str = "1H|\\^&|||ARCHITECT^8.10^F3453010030^H1P1O1R1C1Q1L1|||Admin||||P|1|20150511083525\r\n1D";
var res = string.Join("|", Regex.Replace(str, @"[^|\w.-]+|\bAdmin\b", "|").Split(new[] {"|"}, StringSplitOptions.RemoveEmptyEntries));
<强>更新强>
您还可以使用以下正则表达式将所有内容替换为一遍:
\W*Admin\W*|[\\|^&\s]+
请参阅demo
答案 3 :(得分:1)
100%工作
Regex.Replace(@"1H|\^&|||ARCHITECT^8.10^F3453010030^H1P1O1R1C1Q1L1|||Admin||||P|1|20150511083525 1D", "Admin", "",System.Text.RegularExpressions.RegexOptions.IgnoreCase);
更改:
1:@ before string和
2:System.Text.RegularExpressions.RegexOptions.IgnoreCase
答案 4 :(得分:1)