某些短语后的逗号匹配

时间:2019-09-05 06:31:25

标签: regex atom-editor

我正在使用Atom的正则表达式搜索和替换功能,而不是JavaScript代码。

我认为这个与JavaScript兼容的正则表达式可以工作(我想匹配后面带有Or rather的逗号):

(?!\b(Or rather)\b),
  • ?! =负前瞻

  • \b =单词边界

  • (...) =搜索整个单词,而不是逐个字符

  • \b =单词边界

  • , =实际字符。

但是,如果我从“或者”中删除字符,则正则表达式仍然匹配。我很困惑。

https://regexr.com/4keju

3 个答案:

答案 0 :(得分:1)

(?!\b(Or rather)\b),模式等于,,因为,不等于O会导致负向超前总是返回true。

要删除 Atom Or rather之后的逗号,请使用

查找内容\b(Or rather),
替换为$1

确保选择.*选项以启用正则表达式(而Aa用于区分大小写)。

\b(Or rather),匹配

  • \b-单词边界
  • (Or rather)-捕获与Or rather文本匹配并将其保存在内存缓冲区中的组1,可以使用$1在替换模式下对其进行访问
  • ,-逗号。

JS正则表达式演示

var s = "Or rather, an image.\nor rather, an image.\nor rather, friends.\nor rather, an image---\nOr rather, another time they.";
console.log(s.replace(/\b(Or rather),/g, '$1'));
// Case insensitive:
console.log(s.replace(/\b(Or rather),/gi, '$1'));

答案 1 :(得分:1)

您可能打算使用正向后视而不是负向后视

(?<=\b(Or rather)\b),

Regex Demo

您可以使用标记Read this thread

激活原子中的lookbehind

答案 2 :(得分:0)

要匹配“或者”后的任何逗号,您可以简单地使用 (或更确切地说)(,),然后使用match [2]

访问第二个组

或者替代方案是使用或更确切地说作为一个非捕获组 (?:or)(,),因此第一组将在“或”之后的逗号