Я пытаюсь записать свое регулярное выражение в виде строки (это часть моего токенайзера S-Expression, который сначала разбивается на строки, регулярные выражения и комментарии lisp, а затем разбивает вещи между ними), он работает в https://regex101.com/r/nH4kN6/1/, но есть проблема, чтобы написать его как строку для php.
Мои регулярные выражения JavaScript выглядят так:
var pre_parse_re = /("(?:\\[\S\s]|[^"])*"|\/(?! )[^\/\\]*(?:\\[\S\s][^\/\\]*)*\/[gimy]*(?=\s|\(|\)|$)|;.*)/g;
Я пытался написать это регулярное выражение в php (один из Regex101 был внутри одинарной кавычки).
$pre_parse_re = "%(\"(?:\\[\\S\\s]|[^\"])*\"|/(?! )[^/\\]*(?:\\[\\S\\s][^/\\]*)*/[gimy]*(?=\\s|\\(|\\)|$)|;.*)%";
Мой вклад
'(";()" /;;;/g baz); (baz quux)'
при вызове:
$parts = preg_split($pre_parse_re, $str, -1,
PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
он должен создать тот же массив, что и в Regex101 (3 совпадения и прочее между ними), но он продолжает разделяться на первую точку с запятой внутри регулярного выражения /;;;/g