[英]Regex remove word from a specific string
我试图删除此字符串中的“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
我需要帮助来改善正则表达式:(
没必要在这里使用正则表达式。 你可以使用Replace功能;
yourString.Replace("Admin|", string.Empty);
如果使用正则表达式对您很重要 - 请尝试以下变体:
Regex r = new Regex(@"\bAdmin|\b");
var output = r.Replace(s, string.Empty);
基本上你的正则表达式应该是这样的
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步的溶液:使用正则表达式(与|
加入到否定的字符类)和\\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]+
见演示
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.