是否有任何单个(或等)操作split()
无法执行的正则表达式操作应用程序?match()
search()
findall()
例如,而不是做
subject.split('[|]')
你可以通过调用来获得相同的结果
subject.findall('[^|]*')
并且在几乎所有正则表达式引擎(.NET 和 JGSoft 除外)中,split()
不能做一些事情,比如“|
除非它们被转义,否则拆分\|
”,因为你需要在后视中无限重复。
因此,不必像这样做一些非常难以理解的事情(嵌套的lookbehinds!)
splitArray = Regex.Split(subjectString, @"(?<=(?<!\\)(?:\\\\)*)\|");
你可以简单地做(即使在不支持任何后视的 JavaScript 中)
result = subject.match(/(?:\\.|[^|])*/g);
这让我想知道:有什么我可以做的事情是split()
用单个match()
/无法实现的findall()
吗?我敢打赌没有,但我可能忽略了一些东西。
(我在现代、非常规的意义上定义“正则表达式”,即使用现代正则表达式拥有的一切,如反向引用和环视。)