繁体   English   中英

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

[英]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作为替代(在您的正则表达式,它被不被当作一个字符序列,但个别字符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));

结果: 在此输入图像描述

更新

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

\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

你可以简单地通过

\|*Admin\|*

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM