Регулярное выражение соответствует C #, но не java

У меня есть следующее регулярное выражение (длинное, я знаю):

(?-mix:((?-mix:(?-mix:\{\%).*?(?-mix:\%\})|(?-mix:\{\{).*?(?-mix:\}\}?))
|(?-mix:\{\{|\{\%)))

, которое я использую для разделения строки. Он правильно совпадает с C #, но когда я переместил код на Java, он не совпадает. Есть ли какая-то особенность этого регулярного выражения, предназначенная только для C #?

Исходный код создается как:

String source = Pattern.quote("{% assign foo = values %}.{{ foo[0] }}.");

В C # это:

string source = @"{% assign foo = values %}.{{ foo[0] }}.";

Версия для C # выглядит так:

string[] split = Regex.split(source, regex);

В Java я пробовал оба:

String[] split = source.split(regex);

, а также

Pattern p = Pattern.compile(regex);
String[] split = p.split(source);
6
задан Tudor 2 December 2011 в 20:47
поделиться