Существует ли какое-либо приложение для операции регулярного выражения split()
, которое не может быть выполнено с помощью одной операции match()
(или search()
, findall()
и т. Д.)?
Например, вместо того, чтобы делать
subject.split('[|]')
вы можете получить тот же результат, позвонив на
subject.findall('[^|]*')
И почти во всех движках регулярных выражений (кроме .NET и JGSoft) split()
не может делать такие вещи, как "разбить на |
, если они не экранированы \|
", потому что вы " Мне нужно иметь неограниченное количество повторений внутри взгляда.
Так что вместо того, чтобы делать что-то совершенно нечитаемое, как это (вложенные взгляды!)
splitArray = Regex.Split(subjectString, @"(?<=(?<!\\)(?:\\\\)*)\|");
Вы можете просто сделать (даже в JavaScript, который не поддерживает любой вид назад)
result = subject.match(/(?:\\.|[^|])*/g);
Это привело меня к удивлению: есть ли что-нибудь вообще, что я могу сделать в split()
, чего невозможно достичь с помощью одного match()
/ findall()
вместо этого? Я готов поспорить, что нет, но я, вероятно, что-то упускаю.
(Я определяю «регулярное выражение» в современном, нерегулярном смысле, т. Е. Используя все, что современные регулярные выражения имеют в своем распоряжении, такие как обратные ссылки и обходные пути.)