C# 用于匹配一个单词的所有实例(包含该单词的特定超弦除外)的正则表达式
我正在处理一个正则表达式,它将匹配一个单词的所有实例,但包含该单词的特定字符串除外 例如,我想匹配下面句子中除stack.overflow之外的所有stack实例,因为它后面跟.overflow,并用stack替换stack 这是堆栈溢出上的页面堆栈。有时也指 如stack.overflow.com 执行更换操作后,上面的句子应如下所示: 这是堆栈溢出上的页面堆栈。有时也指 如stack.overflow.com 编辑: 为了澄清一些混淆,我想用所有小写字母匹配包含堆栈的所有字符串,但堆栈后面跟着.overflow的特定情况除外。例如,下面的句子 我把这堆东西叠了起来,又重新叠了起来,但是没有 stack.overflow但stacked.overflow和restacked.overflow 应该是 我把这堆东西叠了起来,又重新叠了起来,但是没有 stack.overflow但STACKed.overflow和reSTACKed.overflowC# 用于匹配一个单词的所有实例(包含该单词的特定超弦除外)的正则表达式,c#,regex,C#,Regex,我正在处理一个正则表达式,它将匹配一个单词的所有实例,但包含该单词的特定字符串除外 例如,我想匹配下面句子中除stack.overflow之外的所有stack实例,因为它后面跟.overflow,并用stack替换stack 这是堆栈溢出上的页面堆栈。有时也指 如stack.overflow.com 执行更换操作后,上面的句子应如下所示: 这是堆栈溢出上的页面堆栈。有时也指 如stack.overflow.com 编辑: 为了澄清一些混淆,我想用所有小写字母匹配包含堆栈的所有字符串,但堆栈后面跟
非常简单:使用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 |.$表示一个空格字符或结尾前的任何一个字符(新行除外),但在删除转义\时出错。谢谢你,科比