簡體   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