簡體   English   中英

正則表達式僅“附加”或“替換”每個單詞的第一個字母?

[英]Regex “Append” or “Replace” only the first letter of each word?

如果我有兩個字,例如“ ga?abg”

我想刪除第二個單詞中的前兩個字符(如果它們與“?a”匹配),並取后一個“ b”並將其附加到第一個單詞上?

我怎樣才能做到這一點? 請幫忙

string five ="ga ?abg";
string T = Regex.Replace(five, "?a", " ");

但是,如何附加第一個“ b”呢?

結果應為“ gab g”。

我猜您想要這樣的東西,盡管我不使用c#,所以語法可能是錯誤的。 (此外,您的描述令人困惑,因此我可能不了解您想要什么)

Regex.Replace(five, "([^ ]+) \\?a([^ ])", "$1$2")

哪里:

  • “(...)”是一個匹配組,$ n復制第n個匹配組的內容
  • “ [^]”表示“除空格外的任何字符
  • “ [^] +”表示“一個或多個非空格字符”
  • “ \\?” 表示“文字問號”,因為問號在正則表達式中是特殊的

我認為您正在尋找的正則表達式是這樣的:

/ \?a./

由於我不知道任何C#,所以這是一個jsfiddle (如果您不知道任何js,我會盡量簡化)

有什么特殊原因需要使用正則表達式嗎?

string answer;
string[] split = five.Split(' ');
if (split.Length == 2 && split[0].Length > 0 && split[1].StartsWith("?a") && split[1].Length > 3)
{
    answer = string.Format("{0}{1} {2}", split[0], split[1].Substring(2, 1), split[1].Substring(3));
}
else
{
    answer = five;
}

另外,您可以使用MatchEvaluator Delegate ,但這仍然需要自定義代碼。 我認為您無法通過一個簡單的Regex.Replace來完成您所要求的。

暫無
暫無

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

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