0

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

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

我怎样才能做到这一点?请帮忙

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

但是如何附加第一个“b”?

结果应该是“gab g”。

4

3 回答 3

1

我猜你想要这样的东西,虽然我不使用 c#,所以语法可能是错误的。(另外,你的描述很混乱,所以我可能不明白你想要什么)

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

在哪里:

  • “(...)”是匹配组,$n复制第n个匹配组的内容
  • “[^]”表示“除空格外的任何字符
  • “[^ ]+”表示“一个或多个非空格字符”
  • “\?” 表示“文字问号”,因为问号在正则表达式中是特殊的
于 2012-05-01T23:49:54.963 回答
0

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

/ \?a./

因为我不知道任何 C#,所以这是一个jsfiddle(我保持简单,以防你不知道任何 js)

于 2012-05-01T23:53:04.573 回答
0

这必须是正则表达式有什么特别的原因吗?

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.

于 2012-05-02T00:11:15.023 回答