Я пытаюсь создать регулярное выражение для токенизации строки. Пример строки будет.
John Mary, "Name=blah;Name=blahAgain" "Hand=1,2"
Я пытаюсь вернуться:
Это было легко:
([^ ])+
Для этого конкретного примера я бы сделал:
([^\s]*)\s+([^,\s]*)\s*,\s*"([^"]*)"\s+"([^"]*)"
update : изменен для разделения Мэри и Джона
Один из возможных способов: разделить на , с последующим space или на один из space или quotation mark:
,
space
quotation mark
"John Mary, \"Name=blah;Name=blahAgain\" \"Hand=1,2\"".split(",\\s|[\\s\"]")
Это работает для вашего примера:
(\w+) (\w+), \"([^"]+)" \"([^"]+)
У всех ваших струн одинаковый рисунок?
Поскольку вы используете Java, почему бы не использовать StringTokenizer?Например:
StringTokenizer st = new StringTokenizer("String to tokenize", " "); while (st.hasMoreTokens()) { // get next token String someVariable = st.nextToken(); }