[英]Need regex to replace all symbols surround by a letters or numbers only
我需要一個正則表達式來僅用字母或數字替換所有符號。 留一個空格,我將使用C#運行表達式,我可以將部分卡在regex部分上。
所以更換后如下
當前表達
(?<=\w)[^a-zA-Z0-9Category:]+(?=\w)
輸入字符串為
-類別:玩具AND(泰迪熊Type-01 *)或(泰迪熊白色:黑色)
所需輸出
-類別:玩具AND(泰迪熊類型01 *)或(泰迪熊白色黑色)
但是我得到的是
-類別:玩具和泰迪熊類型01或泰迪熊白色:黑色)
不知道我是否只是在錯過一些簡單的事情或只是錯誤地堅持了下來
您不能將單詞放入字符類。 那里的所有字符都將添加到該類中,順序無關緊要。
我不確定這是否對您足夠,但是對於您的示例,這將起作用:
(?<=\w)[^a-zA-Z0-9*:()\s]+(?=\w)
並替換為一個空格。
我也會使它更具有Unicode樣式:
(?<=\w)[^\p{L}0-9*:()\s]+(?=\w)
其中\\p{L}
是任何語言字母的Unicode屬性。
更新:
如果要保留冒號(如果有“類別”),則可以這樣操作
(?<=\w)(?:[^a-zA-Z0-9*()\s:]+|(?<!Category):)(?=\w)
我在否定的字符類中添加了冒號,以表示不要替換冒號。 然后,我添加了另一種說法:替換冒號,但前提是之前沒有“ Category”。
對於C#,可以使用Regex.Replace函數。
string a = "Category:Toys AND (Teddy Bear Type-01*) OR (Teddy Bear White/Black)";
string s = string.Empty;
s = Regex.Replace(a, @"[^()*:A-Za-z0-9]", " ");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.