在 InDesign 中,我使用 GREP 表达式
(?<=.)/(?=.)
来查找整个文档中出现的所有字符 / 。我想将此限制为所有不以 http 或 www 开头的单词/字符串。
我已经设法找到所有以 http 或 www 开头且带有
\<www|\<http
的单词/字符串,但是,我无法将两者结合起来。我已经尝试过(?<=.)(?<!\<www|\<http)/(?=.)
但没有成功。
按照规定,您的尝试将确保/
之前的文本不是
www
或http
。我们看不到您的测试数据,所以您到底需要什么并不完全清楚;但可能是这样的
\b(?!(?:http|www))\w+/(?=\w+)
单词边界
\b
将表达式锚定到“单词”的开头(这到底意味着什么取决于您的正则表达式引擎,也许还取决于您的区域设置;通常是字母、数字,也许还有 @ 和下划线),这就是我们的位置锚定消极的前瞻。我们要求其后跟任意数量的“单词”字符、斜杠和更多“单词”字符。
例如,在 URL 中,这将匹配 URL 路径中的组件(例如
com
和 more
以及 stuff
中的 http://example.com/more/stuff
);如果这不是您真正想要的,也许可以编辑您的问题以更详细地阐明您到底需要什么。
演示:https://regex101.com/r/7Y9TYY/1
如果您只想提取斜杠(尽管我认为这有点奇怪?),您可以在它周围添加捕获括号。
如果您的正则表达式引擎允许,您可以将从
\b
到斜杠之前的所有内容放在向后查找中;然而,许多引擎不允许可变宽度负环视。