我有一个像以下简化示例的RegExp:
var exp = /he|hell/;
Run Code Online (Sandbox Code Playgroud)
当我在一个字符串上运行它时,它会给我第一个匹配,fx:
var str = "hello world";
var match = exp.exec(str);
// match contains ["he"];
Run Code Online (Sandbox Code Playgroud)
我想要第一个和最长的匹配,并且我的意思是按索引排序,然后是长度.
由于表达式是从一个RegExp数组合起来的,我正在寻找一种方法来找到最长的匹配,而不必重写正则表达式.
这甚至可能吗?
如果不是,我正在寻找一种方法来轻松分析表达式,并按正确的顺序排列.但我无法弄清楚,因为表达式可能会复杂得多,fx:
var exp = /h..|hel*/
Run Code Online (Sandbox Code Playgroud)
我所知道的所有正则表达式实现都会(尝试)从左到右匹配字符/模式,并在找到整体匹配时终止。
换句话说:如果您想确保获得最长的匹配,您需要(单独)尝试所有模式,存储所有匹配,然后从所有可能的匹配中获得最长的匹配。
| 归档时间: |
|
| 查看次数: |
4750 次 |
| 最近记录: |