Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正则表达式与GWT_Java_Regex_Gwt - Fatal编程技术网

Java 正则表达式与GWT

Java 正则表达式与GWT,java,regex,gwt,Java,Regex,Gwt,我的问题是:在GWT中使用正则表达式有好的解决方案吗 例如,我不满意使用String.split(regex)。GWT将代码转换为JS,然后将正则表达式用作JS正则表达式。但是我不能使用Java Matcher或Java模式之类的东西。但我需要这些来进行群体匹配 有没有可能去图书馆 我尝试了Jakarta Regexp,但我遇到了其他问题,因为GWT并没有模拟该库使用的JavaSDK的所有方法 我希望能够在客户端使用类似以下内容: // Compile and use regular expre

我的问题是:在GWT中使用正则表达式有好的解决方案吗

例如,我不满意使用String.split(regex)。GWT将代码转换为JS,然后将正则表达式用作JS正则表达式。但是我不能使用Java Matcher或Java模式之类的东西。但我需要这些来进行群体匹配

有没有可能去图书馆

我尝试了Jakarta Regexp,但我遇到了其他问题,因为GWT并没有模拟该库使用的JavaSDK的所有方法

我希望能够在客户端使用类似以下内容:

// Compile and use regular expression
Pattern pattern = Pattern.compile(patternStr);
Matcher matcher = pattern.matcher(inputStr);
boolean matchFound = matcher.find();

if (matchFound) {
    // Get all groups for this match
    for (int i=0; i<=matcher.groupCount(); i++) {
        String groupStr = matcher.group(i);
        System.out.println(groupStr);
    }
} 
//编译并使用正则表达式
Pattern=Pattern.compile(patternStr);
Matcher Matcher=pattern.Matcher(inputStr);
布尔matchFound=matcher.find();
如果(找到匹配项){
//获取此比赛的所有组

对于(int i=0;i如果您想要一个纯GWT解决方案,我不确定它是否可以实现。但是如果您愿意使用JSNI,您可以使用JavaScript的RegExp对象来获得匹配的组和所有组。您需要学习JSNI for GWT和JavaScript RegExp对象。

这似乎提供了对java.util.regex.Pattern和friends的模拟。 它看起来并不完整(特别是Matcher),但可能是一个好的开始


他们用来为客户端插入自己的Java类实现的技术是模块XML中的
声明。在GWT文档的“用另一个包实现覆盖一个包实现”下的模块XML格式描述中提到了这一点.GWT中的标准JRE可翻译类以相同的方式进行模拟。

GWT 2.1现在有一个类可以解决您的问题:

使用RegExp的相同代码可能是:

// Compile and use regular expression
RegExp regExp = RegExp.compile(patternStr);
MatchResult matcher = regExp.exec(inputStr);
boolean matchFound = matcher != null; // equivalent to regExp.test(inputStr); 

if (matchFound) {
    // Get all groups for this match
    for (int i = 0; i < matcher.getGroupCount(); i++) {
        String groupStr = matcher.getGroup(i);
        System.out.println(groupStr);
    }
}
//编译并使用正则表达式
RegExp RegExp=RegExp.compile(patternStr);
MatchResult matcher=regExp.exec(inputStr);
布尔matchFound=matcher!=null;//等价于regExp.test(inputStr);
如果(找到匹配项){
//获取此比赛的所有组
对于(int i=0;i
这个答案涵盖了所有模式匹配,而不仅仅是一个,就像这里的其他答案一样:

功能:

private ArrayList<String> getMatches(String input, String pattern) {
    ArrayList<String> matches = new ArrayList<String>();
    RegExp regExp = RegExp.compile(pattern, "g");
    for (MatchResult matcher = regExp.exec(input); matcher != null; matcher = regExp.exec(input)) {
       matches.add(matcher.getGroup(0));
    }
    return matches;
}
private ArrayList getMatches(字符串输入,字符串模式){
ArrayList matches=新的ArrayList();
RegExp RegExp=RegExp.compile(模式“g”);
for(MatchResult matcher=regExp.exec(输入);matcher!=null;matcher=regExp.exec(输入)){
matches.add(matcher.getGroup(0));
}
返回比赛;
}
…和样本使用:

ArrayList<String> matches = getMatches(someInputStr, "\\$\\{[A-Za-z_0-9]+\\}");
for (int i = 0; i < matches.size(); i++) {
    String match = matches.get(i);

}
ArrayList matches=getMatches(someInputStr,“\\$\\{[A-Za-z\u 0-9]+\}”);
for(int i=0;i
我考虑过这一点,但没有发现它是一个好的解决方案。我以前尝试过这个库。它是一个很好的解决方案,用于缺少JRe仿真,但在本例中它不支持分组。缺少用于分组的方法。我建议修复RexExp键入错误,并将链接放在RegExp后面,而不是内联。在这一点上,您完全正确e、 这是拼图中缺少的部分。10倍多!你确定
@AndreyRegentov是的。我检查了,然后修复了这个问题。这些类的酷之处在于GWT提供了纯Java版本,所以我们仍然可以用JUnit测试它们的用法。