2014-11-06 4 views
2

Я использую RegEx, который работает в DevMode, но не один раз компилируется и развертывается. Она является частью простирающейся com.google.gwt.user.client.ui.SuggestOracle.Suggestion класса:GWT Regex работает в DevMode, не работает в Production

@Override 
public String getDisplayString() { 
    String toReturn = myUser.getName() + " (" + myUser.getUserid() + ") " + (myUser.getCompanyname() == null ? "N/A" : myUser.getCompanyname()); 
    return toReturn.replaceAll("(?i)" + "(" + myInput + ")", "<b>$1</b>"); 
    return toReturn; 
} 

Официальная документация (http://www.gwtproject.org/javadoc/latest/com/google/gwt/regexp/shared/RegExp.html) говорится следующее:

Есть несколько небольших несовместимости между двумя реализациями. Java-специфичные конструкции в синтаксисе регулярных выражений (например, [az & & [^ bc]], (? < = foo), \ A, \ Q) работают только в чистой реализации Java, а не в реализации GWT, а не отклонено либо. Кроме того, специфические для Javascript конструкции $ `и $ 'в выражении замены работают только в реализации GWT, а не в чистой реализации Java, которая их отвергает.

Тем не менее, я не знаю, как адаптировать мой RegEx так, чтобы он работал после его развертывания.

Этот сайт (http://planet.jboss.org/post/smartgwt_tip_regex_evaluation) говорит, что это:

Решение был заказать или варианты из наиболее сложных для наименее сложных

ЛЮБЫХ идей, как адаптировать это решение моей probem?

Cheers, Tim

ответ

2

JavaScript не поддерживает (?i), чтобы переключиться на регистронезависимом матч.

Лучше всего использовать com.google.gwt.regexp.shared.RegExp:

public String getDisplayString() { 
    String toReturn = myUser.getName() + " (" + myUser.getUserid() + ") " + (myUser.getCompanyname() == null ? "N/A" : myUser.getCompanyname()); 
    return RegExp.compile(myInput, "ig").replace(toReturn, "<b>$&</b>"); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^