正则表达式“附加”或“替换”仅每个单词的第一个字母
本文关键字:单词 第一个 附加 替换 正则表达式 | 更新日期: 2023-09-27 18:32:55
如果我有两个词,例如"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 委托,但这仍然需要自定义代码。 我不认为你可以通过一个简单的Regex.Replace
来做你所要求的。