我有一个正则表达式匹配,如下面的代码:

string[] specials = new string[] { "special1", "special2", "special3" };
for (int i = 0; i < specials.Length; i++)
{
    string match = string.Format("(?:\\s)({0})(?:\\s)", specials[i]);
    if (Regex.IsMatch(name, match, RegexOptions.IgnoreCase))
    {
        name = Regex.Replace(name, match, specials[i], RegexOptions.IgnoreCase);
        break;
    }
}

我想要的是让替换操作只替换匹配的文本并保留前导和尾随空格。 所以“这是一个特别的1句话”将成为“这是一个特殊的句子”。 使用上面的替换语句,我得到“这是aspecial1sentence”。

解:

基于@Jerry的评论,我将比赛更改为:

(\\\\s)({0})(\\\\s)

和替换为:

name = Regex.Replace(name, match, "$1" + specials[i] + "$3", RegexOptions.IgnoreCase);

并且能够获得理想的结果。

===============>>#1 票数:2 已采纳

您可以使用lookbehind和lookahead检查空格,而不在匹配中包含它们:

string[] specials = new string[] { "special1", "special2", "special3" };
for (int i = 0; i < specials.Length; i++)
{
    string match = string.Format("(?<=\\s){0}(?=\\s)", specials[i]);
    if (Regex.IsMatch(name, match, RegexOptions.IgnoreCase))
    {
        name = Regex.Replace(name, match, specials[i], RegexOptions.IgnoreCase);
        break;
    }
}

这样您就不必再添加空格了。

  ask by CtrlDot translate from so

未解决问题?本站智能推荐:

2回复

如何在不修改换行符的情况下替换多个空格?

因此,正如标题所述,我在用单个空格符号替换多个空格和\\ t时遇到了很大的问题。 例如,我有以下字符串: 如您所见,我的字符串同时包含\\ t和\\ s符号。 我已经尝试过这种方法: 但是最后我收到的是简单的字符串,没有换行符。 所以....是否有任何方法可以忽略换行
2回复

正则表达式-仅在有空格的情况下从两侧查找

我需要有关正则表达式的帮助。 我需要找到一个被任何元素包围的单词,例如- * 。 但是,只有在以太侧上没有空格或没有空格时,我才需要匹配它。 例如,如果它是在文本的开头,那么我实际上不能在那里有空格,结尾也一样。 这是我想到的 You will find ->me<
3回复

替换前导空格并在特定字符之前终止匹配

无法弄清楚如何为以下内容建立替换模式。 我有以下几行: 每行的开头都有一个空格。 可以是一个空格,也可以是两个空格或N个空格。 在生产线本身的任何地方也可能存在空格。 所需要的是仅在第一个<字符之前的行开头替换空格。 每个空格都应替换为& 因此,如
5回复

正则表达式-如何在给定几个开头字母的情况下替换某个单词

我有以下字符串-“ ct肺,纵隔”。 现在,我想做一个Regex.Replace ,以便将表达式中以字母“ media”开头的单词转换为“ chest”。 因此,以下字符串应转换为“ ct胸部无对比度”- “ ct媒体无反差” “ ct媒体没有对比” “ ct媒
1回复

如何在不破坏格式的情况下在Word中进行正则表达式替换?

我正在尝试在Word文档中进行搜索/替换。 但是,替换后,字体格式(不仅是粗体/字体系列/颜色等)完全消失了。 这是我的代码示例(如果后面跟有希腊字母,则用希腊字符替换“ a1”): 有没有简单的方法可以做到这一点? 我还尝试了一个更复杂的方法: 这种方法可以保留格式,
2回复

正则表达式匹配一定数量的字符并在它们之间留出空格

我目前正在研究一个正则表达式,它需要精确匹配8位数字。 但是有时候,在这些数字之间会出现空格或点。 这是我当前正在使用的正则表达式。 它在大多数情况下都能正常工作,但是我遇到的问题是,有时它会将数字与很多空格相匹配,所以您会得到类似1234 / s / s / s / s(/ s代表
3回复

C#正则表达式用空格替换标点符号并用逗号匹配括号

我有一个带有标点符号和匹配括号的Form数据。 我需要将标点符号替换为空格,并将大括号替换为逗号。 还需要确保最终结果没有多个空格。 例如: 应该 试图拥有三个正则表达式并按顺序替换它们 我的最终结果是: 仍然无法获得。 我知道有一个正则表达式可以解决
1回复

.NET正则表达式在不匹配的情况下超时

我有一个具有以下格式的大字符串: PortfolioIdList可以为空[]也可以包含数字,如上所示。 这个想法是当且仅当它包含数字即不为空时,才将另一个数字插入到PortfolioIdList中。 我为此写了一个正则表达式,它正在超时。 正则表达式为: 如果列表不为空,则
1回复

C#正则表达式仅在没有评论的情况下匹配

我正在编写一个用于Avisynth编辑的应用程序,并尝试获取所有变量,这些变量被定义为正则表达式中的以下源: 我正在使用以下正则表达式,到目前为止效果很好(全局,不区分大小写): 输出为: 组“ var”:视频 组0:ImageReader 组1:“。\\ Bi
2回复

如何在正则表达式中用特殊符号替换特殊字符和空格?

我正在开发Windows Phone 8应用程序。 我需要将特殊字符,空格和多个空格替换为- [破折号] 样品 不带替换字符串- 坦帕东部(赌场区)汉普顿套房酒店 我需要这样- 汉普顿旅馆套房坦帕东部赌场区 我用这样的正则表达式尝试过 C# 以上代码输