[英]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.