Избавьтесь от косых черт. Вам не нужны те, что в Java. Кроме того, аромат Java regex не распознает такие переключатели, как /g
и /i
; они контролируются константами в java.util.regex.Pattern
.
Единственные Javascript-переключатели, которые имеют смысл в мире Java: /i
и /m
. Эти карты относятся к Pattern.CASE_INSENSITIVE
и Pattern.MULTILINE
(вы можете использовать эти переключатели при создании регулярного выражения из класса Pattern
, или вы можете использовать их inline - я покажу это позже).
/g
не имеет ничего общего, но вы можете контролировать замещение поведения, используя String.replaceAll
по сравнению с String.replaceFirst
.
Чтобы получить код для работы, вы должны сделать что-то вроде этого:
strOutput.replaceAll("{{[^]*?}}", "");
Если вы хотите использовать переключатели, вам нужно сделать что-то добавить, как (?i)
в начале регулярного выражения.
Вы не можете использовать String.replace
, потому что он принимает CharSequence
для первого аргумента, а не для регулярного выражения.
Также помните, что методы «быстрого повторного выражения», предлагаемые классом String
, могут не работать так, как вы ожидаете. Это связано с тем, что когда вы указываете шаблон (скажем, abc
) в качестве регулярного выражения для matches
, например, фактический образец, видимый Java, - ^abc$
. Таким образом, abc
будет соответствовать, но bc
не будет.
Дополнительная информация here.
Можете ли вы опубликовать созданную Java, которая дала вам ошибку? –