正则表达式从特定字符串中删除单词

时间:2015-08-19 08:03:16

标签: c# regex

我试图删除此字符串中的“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

我需要帮助来改善正则表达式:(

5 个答案:

答案 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作为替代(在正则表达式中,它不被视为字符序列) ,但字符类中的单个字符ad ...,\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));

结果:enter image description here

<强>更新

您还可以使用以下正则表达式将所有内容替换为一遍:

\W*Admin\W*|[\\|^&\s]+

请参阅demo

enter image description here

答案 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)

您只需通过

即可
\|*Admin\|*

您可以使用此正则表达式删除并替换为|。 见演示。

https://regex101.com/r/uF4oY4/81