簡體   English   中英

在C#中使用正則表達式刪除特定的字符組合

[英]Use regex in c# to remove specific combination of characters

我想在字符串中保留以下字符:

  • 數字字符:1-9
  • 字母字符:aA-zA
  • 僅用字母數字字符包圍的撇號字符,即“ x'x”,其中x屬於字母數字字符組。

至此,我可以保留所有字母數字字符。 問題在於撇號字符,我保留所有撇號,而我只保留那些由字母數字字符包圍的字符。 這是我的代碼:

Regex rgx = new Regex("[^a-zA-Z0-9' -]");
string newString = rgx.Replace(oldString, "");

示例:對於此字符串"abc'd1*%'" ,我想獲取"abc'd1"

您可以使用下面的正則表達式,然后將匹配的字符替換為空字符串。

@"(?<![A-Za-z])'|'(?![A-Za-z])|[^A-Za-z0-9']"

DEMO

說明:

  • (?<![A-Za-z])'匹配所有不帶字母的單引號。
  • | 要么
  • '(?![A-Za-z])匹配所有不帶字母的單引號。 因此,這兩種模式無法匹配單引號,該單引號前后均帶有字母。
  • | 要么
  • [^A-Za-z0-9']從其余字符串開始,此模式將匹配任何字符,但不匹配字母數字或單引號。

碼:

string str = "abc'd1*%'";
string result = Regex.Replace(str, @"(?<![A-Za-z])'|'(?![A-Za-z])|[^A-Za-z0-9']", "");
Console.WriteLine(result);
Console.ReadLine();

IDEONE

[a-zA-Z0-9 -]+|(?<=[a-zA-Z])'(?=[a-zA-Z])

試試看。看演示。

https://regex101.com/r/dU7oN5/13

如果要匹配空格,請嘗試以下操作:

[\w\s-]+|(?<=[\w\s])'(?=[\w\s])

如果沒有空格,請嘗試以下操作:

[\w-]+|(?<=[\w])'(?=[\w])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM