GREP 查找没有结束撇号的字符序列

问题描述

我试图在我正在编辑的文本中找到长引号,以便我可以对它们应用不同的样式。我试过这个 GREP:

~[.{230}(?!.~])

我需要的是让 GREP 找到以左/左引号开头的任何 230 个字符,不包括任何 230 个字符的序列,包括一个字符后跟右/左引号的字符。这应该从搜索中消除少于 230 个字符的引号。我的 GREP 找到了正确的长度序列,但不排除那些包含正确引号的序列。

所以我想找到这个,这是我的 GREP 所做的:

enter image description here

但不是这个,我的 GREP 也发现了:

enter image description here

因为它有一个结束语,因此我将其归类为短引号。

有什么想法吗? TIA

解决方法

您可以匹配开头 后跟 230 次或更多出现的任何字符,但开头或结尾引号除外。

要不匹配右引号,您可以使用正向前瞻来断言它。

‘[^‘’]{230,}(?=’)
  • 匹配
  • [^‘’]{230,} 使用 negated character class
  • 重复除 之外的任何字符 230 次以上
  • (?=’) 正向预测,直接向右断言

看到一个 regex demo