Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用于匹配一个单词的所有实例(包含该单词的特定超弦除外)的正则表达式_C#_Regex - Fatal编程技术网

C# 用于匹配一个单词的所有实例(包含该单词的特定超弦除外)的正则表达式

C# 用于匹配一个单词的所有实例(包含该单词的特定超弦除外)的正则表达式,c#,regex,C#,Regex,我正在处理一个正则表达式,它将匹配一个单词的所有实例,但包含该单词的特定字符串除外 例如,我想匹配下面句子中除stack.overflow之外的所有stack实例,因为它后面跟.overflow,并用stack替换stack 这是堆栈溢出上的页面堆栈。有时也指 如stack.overflow.com 执行更换操作后,上面的句子应如下所示: 这是堆栈溢出上的页面堆栈。有时也指 如stack.overflow.com 编辑: 为了澄清一些混淆,我想用所有小写字母匹配包含堆栈的所有字符串,但堆栈后面跟

我正在处理一个正则表达式,它将匹配一个单词的所有实例,但包含该单词的特定字符串除外

例如,我想匹配下面句子中除stack.overflow之外的所有stack实例,因为它后面跟.overflow,并用stack替换stack

这是堆栈溢出上的页面堆栈。有时也指 如stack.overflow.com

执行更换操作后,上面的句子应如下所示:

这是堆栈溢出上的页面堆栈。有时也指 如stack.overflow.com

编辑:

为了澄清一些混淆,我想用所有小写字母匹配包含堆栈的所有字符串,但堆栈后面跟着.overflow的特定情况除外。例如,下面的句子

我把这堆东西叠了起来,又重新叠了起来,但是没有 stack.overflow但stacked.overflow和restacked.overflow

应该是

我把这堆东西叠了起来,又重新叠了起来,但是没有 stack.overflow但STACKed.overflow和reSTACKed.overflow


非常简单:使用lookarounds! 它们匹配单词的开头和结尾

(?<=\s|^)stack(?=\s|\.$)
我无法向您演示整个过程,因为Javascript不支持lookbehind,但请参见。然后,你可以得到你的匹配,并用toUpper替换它

解释


相当简单:使用lookarounds! 它们匹配单词的开头和结尾

(?<=\s|^)stack(?=\s|\.$)
我无法向您演示整个过程,因为Javascript不支持lookbehind,但请参见。然后,你可以得到你的匹配,并用toUpper替换它

解释


使用消极的前瞻

\bstack(?!\.overflow)
要使其不区分大小写,请使用RegexOptions.IgnoreCase标志

C带有Regex.Replace的示例代码,其中标记替换为内联?i选项:

证明:

System.Text.RegularExpressions.Regex.Replace("This is a stack of pages on stack overflow. Sometimes also referred to as stack.overflow.com"
    ,"stack(?!\.overflow)"
    ,"STACK")

使用消极的前瞻

\bstack(?!\.overflow)
要使其不区分大小写,请使用RegexOptions.IgnoreCase标志

C带有Regex.Replace的示例代码,其中标记替换为内联?i选项:

证明:

System.Text.RegularExpressions.Regex.Replace("This is a stack of pages on stack overflow. Sometimes also referred to as stack.overflow.com"
    ,"stack(?!\.overflow)"
    ,"STACK")
这对我有用。排除后跟.overflow的匹配项


这对我有用。排除后跟.overflow的匹配项。

对于单词stack,您想做什么?并用stack替换stack阅读问题@moveaway00!:-如果OP只想替换由单词边界分隔的单词堆栈实例、包含句点的实例或5个字符“堆栈”的所有实例,即使它们是较大单词的子字符串,PIt不是非常清楚。当你说除了包含该单词的特定字符串外,是指所有字符串吗?我将这个堆栈堆叠起来,然后重新堆叠,但是没有stack.overflow或stacked.overflow或restacked.overflow。这不是一个真正的句子。对于单词stack,你想怎么做?用stack替换stack阅读问题@moveaway00!:-如果OP只想替换由单词边界分隔的单词堆栈实例、包含句点的实例或5个字符“堆栈”的所有实例,即使它们是较大单词的子字符串,PIt不是非常清楚。当你说除了包含该单词的特定字符串外,是指所有字符串吗?我将这个堆栈堆叠起来,然后重新堆叠,但是没有stack.overflow或stacked.overflow或restacked.overflow。这不是一个真正的句子。它不应该是一个消极的前瞻吗?有了积极的前瞻,这与OP要求的正好相反。看看这个正则表达式是如何与提供的示例一起工作的。伙计们,用手机回答这个问题并不容易。已修复。\b备份?!\。溢出完全符合我的需要!谢谢!不客气。我终于坐在桌面上,贴出了一张有证据的截图。这不应该是一个消极的前瞻吗?积极的前瞻,这与OP要求的正好相反。看看这个正则表达式是如何与提供的示例一起工作的。伙计们,用手机回答这个问题并不容易。已修复。\b备份?!\。溢出完全符合我的需要!谢谢!不客气。我终于坐在桌面上,发布了一个带证明的截图。你测试过你的模式吗=\s |.$表示一个空格字符或结尾前的任何一个字符(新行除外),但在删除转义\时出错。谢谢你,@KobiDid你在测试你的模式吗=\s |.$表示一个空格字符或结尾前的任何一个字符(新行除外),但在删除转义\时出错。谢谢你,科比