我有这个字符串:
λx.λy.Math.pow(x,y)
我想得到:
Math.pow(x,y)
基本上是.
后λ
之后的所有内容。最后一部分还可能包含λ
。
λx.λy.print("λ"+x+".λ"+y)
答案 0 :(得分:1)
以下正则表达式应该有效:
/((λ.+?)\.)+([^λ].*)/
正则表达式需要一系列以λ
开头的单词,由.
分隔,直到找到一个不以λ
开头的单词。找到该单词后,最后一组将匹配 - 您正在寻找的组。
示例:
var
re = /((λ.+?)\.)+([^λ].*)/,
m,
test1 = 'λx.λy.Math.pow(x,y)',
test2 = 'λx.λy.print("λ"+x+".λ"+y)',
test3 = 'λx.λy.λx.λy.λx.λfoo.λa.λz.print("λ"+x+".λ"+y)';
console.info(test1.match(re).pop()); // prints 'Math.pow(x,y)'
console.info(test2.match(re).pop()); // prints 'print("λ"+x+".λ"+y)'
console.info(test3.match(re).pop()); // prints 'print("λ"+x+".λ"+y)'
您应该始终寻找最后一组。当然,你应该先检查一下比赛:
var
re = /((λ.+?)\.)+([^λ].*)/,
m,
test4 = "won't match";
m = test4.match(re);
if (m) {
console.info(m.pop());
} else {
console.info('No match found');
}