首页 > 解决方案 > 是否可以使用正则表达式向后查找匹配项?

问题描述

所以我想找到适合正则表达式的2个或更少字符的匹配并将它们推入数组。例如[a-z]{1,2}在字符串上使用"abcde"会返回:

["ab", "cd", "e"]

事情[a-z]{1,2}只是在字符串中搜索“转发”。我想“向后”搜索类似的东西。

["de", "bc", "a"]

是否可以使用正则表达式而不使用任何 JavaScript(无论是reverse()方法还是其他方式)来做到这一点?我正在尝试为使用其内置 GREP 的 InDesign 编写脚本,但如果这里没有人熟悉它的 API,请使用 Notepad++ 的正则表达式引擎提供建议。

**请注意,它必须是["de", "bc", "a"],而不是 * ["ed", "cb", "a"]

标签: javascriptregex

解决方案


您可以使用带有前瞻的正则表达式,它坚持在行尾之前有偶数个字符,然后反转结果。例如,在 JS 中:

const str = 'abcde';

let a = str.match(/[a-z]{1,2}(?=([a-z]{2})*$)/g).reverse();
console.log(a);


推荐阅读