使用 ^ 排除多个模式

Exclude multiple patterns with ^

我正在尝试搜索以左撇号开头但不包括句号和右撇号的 250 多个字符的字符串;逗号和结束撇号;感叹号和结束撇号;或问号和结束撇号。我正在尝试查找长引号但排除短引号(少于 250 个字符)。问题在于右引号看起来与所有格撇号相同。 (也许美国人用双引号引起了注意?)

这是没有排除标点符号的代码。,!?

‘[^’]{230,}

这是我修改后的代码(不起作用):

‘[^.’|,’|?’|!’]{230,}

这样我就可以包含诸如“Charles's horse”之类的短语,但不包含少于 250 个字符的引号

您可以匹配匹配 然后重复至少 230 次(或 250+ 次)匹配任何列出的字符 [.,?!] 不直接跟在

‘(?:(?![.,?!]’)[^’]){230,}

模式匹配

  • 匹配开头
  • (?:非捕获组
    • (?![.,?!]’) 否定前瞻,断言不是 . , ?!
    • 之一
    • [^’] 匹配除结尾`'之外的任何字符
  • ){230,}重复230+次

Regex demo

如果最后必须有一个结束引号,您可以断言使用正向前看 (?=’)

‘(?:(?![.,?!]’)[^’]){230,}(?=’)

Regex demo

谢谢。我没有很好地解释我想要什么,但这就是我所要求的。我真正需要的是一种查找长引号的方法,它不排除包含撇号的长引号。这似乎在 Regex 演示中有效,但在 InDesign 中无效。

‘.{250,}(?=[.’])(?=[’])(?=[?’])(?=[!’])

https://regex101.com/r/Um2Ylb/1

有两个长引号(一个带有所有格撇号 s)和一个短引号,它会找到两个长引号。但在 InDesign 中,它只会找到任何以撇号开头的内容(它会忽略整点、问号、逗号和感叹号)。我认为这是因为它在积极的后视中只看一个角色。有没有办法让它同时查找这两个字符?