两种方法之间存在这种非常相似的接口不匹配。
bool endsWith(String other)
bool startsWith(Pattern pattern, [int index=0])
这是什么原因?作者的想法是什么?
答案 0 :(得分:4)
Pattern
的API并未提供任何向后搜索匹配的方法。如果endsWith
采用了一种模式,则需要逐个尝试从字符串后面找到匹配项(最有可能是O(n ^ 2))。
请注意,您不能只使用Pattern.allMatches
并查看最后一次匹配是否在输入结尾处结束:
var re = new RegExp('a|ab');
re.allMatches('ab'); // => one match: 'a'.
在这个例子中只有' a'是匹配的,如果我们使用allMatches
迭代器来确定字符串是否以给定的正则表达式结束,它将错误地失败。