Похоже, ваш движок регулярных выражений не поддерживает утверждения за кадром.Чтобы не использовать lookbehinds, вы можете попробовать следующее:
"([^"]*)"|(\S+)
или в кавычках:
"\"([^\"]*)\"|(\\S+)"
Это регулярное выражение будет работать, но каждое совпадение будет иметь два захвата, один из которых будетпусто (либо первое - в случае слова без кавычек, либо второе - в случае строки в кавычках).
Чтобы использовать это, вам нужно выполнить итерацию по всем совпадениям, идля каждого совпадения используйте непустой захват.
Я не знаю достаточно о TR1, поэтому я не знаю точно, как каждый повторяет все совпадения.Но если я не ошибаюсь, res.size()
всегда будет равен 3.
Например, для строки asdf "one two three" werq
первое совпадение будет:
res[0] = "asdf" // the entire match
res[1] = "" // the first capture
res[2] = "asdf" // the second capture
.второй матч будет:
res[0] = "\"one two three\"" // the entire match including leading/trailing quotes
res[1] = "one two three" // the first capture
res[2] = "" // the second capture
, а третий матч будет:
res[0] = "werq" // the entire match
res[1] = "" // the first capture
res[2] = "werq" // the second capture
HTH.