подход Яна велик, но вот еще один для записи.
Если вы действительно хотели разделить, как указано в заголовке, сохраняя кавычки в "will be"
и 'regular expression'
, вы можете использовать этот метод, который прямо из Match (или replace) шаблон, за исключением ситуаций s1, s2, s3 и т. д.
Регулярное выражение:
'[^']*'|\"[^\"]*\"|( )
Два левых чередования соответствуют полному 'quoted strings'
и "double-quoted strings"
. Мы проигнорируем эти матчи. Правая сторона сопоставляет и фиксирует пробелы в группе 1, и мы знаем, что они являются правильными пространствами, потому что они не соответствовали выражениям слева. Мы заменим их на SplitHere
, затем разделим на SplitHere
. Опять же, это для истинного раздельного случая, когда вы хотите "will be"
, а не will be
.
Вот полная рабочая реализация (см. Результаты в онлайн-демонстрации ). .
import java.util.*;
import java.io.*;
import java.util.regex.*;
import java.util.List;
class Program {
public static void main (String[] args) throws java.lang.Exception {
String subject = "This is a string that \"will be\" highlighted when your 'regular expression' matches something.";
Pattern regex = Pattern.compile("\'[^']*'|\"[^\"]*\"|( )");
Matcher m = regex.matcher(subject);
StringBuffer b= new StringBuffer();
while (m.find()) {
if(m.group(1) != null) m.appendReplacement(b, "SplitHere");
else m.appendReplacement(b, m.group(0));
}
m.appendTail(b);
String replaced = b.toString();
String[] splits = replaced.split("SplitHere");
for (String split : splits) System.out.println(split);
} // end main
} // end Program
AVI на самом деле не поддерживает H.264.
Есть несколько хаков, которые заставляют его работать, но неудивительно, что у вас есть побочные эффекты. Попробуйте вместо этого использовать MP4 или MKV.