C# Regex“;附加“;或;替换“;每个单词只有第一个字母?

C# Regex“;附加“;或;替换“;每个单词只有第一个字母?,c#,regex,C#,Regex,如果我有两个词,比如“ga?abg” 我想删除第二个单词中的前两个字符,如果它们与“?”a”匹配,并在“b”之后添加它到第一个单词 我该怎么做?请帮忙 string five ="ga ?abg"; string T = Regex.Replace(five, "?a", " "); 但是如何附加第一个“b” 结果应该是“gab g”。我猜你想要这样的东西,尽管我不使用c,所以语法可能是错误的。(此外,您的描述令人困惑,因此我可能不明白您想要什么) 其中: “(…)”是一个匹配组,$n复制第

如果我有两个词,比如“ga?abg”

我想删除第二个单词中的前两个字符,如果它们与“?”a”匹配,并在“b”之后添加它到第一个单词

我该怎么做?请帮忙

string five ="ga ?abg";
string T = Regex.Replace(five, "?a", " ");
但是如何附加第一个“b”


结果应该是“gab g”。

我猜你想要这样的东西,尽管我不使用c,所以语法可能是错误的。(此外,您的描述令人困惑,因此我可能不明白您想要什么)

其中:

  • “(…)”是一个匹配组,$n复制第n个匹配组的内容
  • “[^]”表示“除空格外的任何字符
  • “[^]+”表示“一个或多个非空格字符”
  • “\?”表示“文字问号”,因为问号在正则表达式中是特殊的

我认为您正在寻找的正则表达式是:

/ \?a./

因为我不知道任何C#,这里有一个(我保持简单,以防你不知道任何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;
}

或者,您可以使用,但这仍然需要自定义代码。我不认为您可以通过简单的
正则表达式来实现您的要求。替换

对不起,您希望得到什么结果?前两个字符?
两个单词,例如“ga?abg”
它们是单词吗?您所说的“单词”是什么意思“?@JamesDidzun。你不是有角色在你的后面吗?!谢谢你们,这真的很有帮助。如果第二个单词的第一个字符以某个字母开头,我想在第一个单词前面加上第一个字符。另一个例子“per aldwa”如果单词以pattern“al”开头,它将省略“al”,并将“d”放在“per”->“perd wa”@Iman25。查看C#docs,您可能想使用
“$1$2”
而不是
“\\1\\2”
(这是一种不同于regexp的实现,正如我所说的,我没有使用c版本)。
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;
}