当前位置: 首页 > 面试题库 >

将RegEx从JavaScript转换为Java

吉玉石
2023-03-14
问题内容

好的,所以我试图用“,”分割字符串,它们不在’[‘或’]’内部。我有一个适用于JavaScript的RegEx,但无法将其转换为Java语法。

JS RegEX:

/,(?![^[]*])/g

例句:

ex1 , [ex2 , ex3 ] , ex 4 , ex 4, [ex , ex ]

它在http://refiddle.com上运行良好,但是当我尝试在Java中(在Eclipse下)使用RegEx时,出现错误消息:

索引10附近的未封闭字符类,(?![^ [] *])

我所做的就是删除开头的“ /”和结尾的“ / g”,但我无法翻译语法。

实现此目标的最佳方法是什么?


问题答案:

由于还需要支持嵌套的方括号,并且在方括号内应忽略逗号,因此需要一个简单的解析器来收集所需的文本块。

public static List<String> splitWithCommaOutsideBrackets(String input) {
    int BracketCount = 0;
    int start = 0;
    List<String> result = new ArrayList<>();
    for(int i=0; i<input.length(); i++) {
        switch(input.charAt(i)) {
        case ',':
            if(BracketCount == 0) {
                result.add(input.substring(start, i).trim());// Trims the item!
                start = i+1;
            }
            break;
        case '[':
            BracketCount++;
            break;
        case ']':
            BracketCount--;
            if(BracketCount < 0) 
                return result; // The BracketCount shows the [ and ] number is unbalanced
            break;
        }
    }
    if (BracketCount > 0)
        return result; // Missing closing ]
    result.add(input.substring(start).trim()); // Trims the item!
    return result;
}

并用作

String s = "ex1 , [ex2 , ex3 ] , [ hh3 , rt5 , w3 [ bn7 ] ] , ex 4 , ex 4, [ex , ex ]";
List<String> res = splitWithCommaOutsideBrackets(s);
for (String t: res) {
    System.out.println(t);
}

示例Java代码的输出:

ex1
[ex2 , ex3 ]
[ hh3 , rt5 , w3 [ bn7 ] ]
ex 4
ex 4
[ex , ex ]

请注意,不需要修剪项目。

另外,在I处return result,您可能想添加引发异常的代码,而不是立即返回result

原始答案

在Java中的字符类,]并且[必须转义,不像在JavaScript中,你只需要逃避]符号(字符类中)。

String pat = ",(?![^\\[]*])";
                    ^^

这是一个IDEONE演示:

String s = "ex1 , [ex2 , ex3 ] , ex 4 , ex 4, [ex , ex ]";
String pat = ",(?![^\\[]*])";
String[] result = s.split(pat);
System.out.println(Arrays.toString(result));

请注意,在Java和JS中],都不必转义字符类外部的。



 类似资料:
  • 问题内容: 有人可以帮助我将php regex转换为java regex吗? 太好了,如果您能帮助我,我将不胜感激,因为我对正则表达式的了解不强。 我如何理解php中的函数与Java中的函数相同?。因此在Java代码中将是这样。 但是此代码无法正常工作,因为我怎么知道php中的regex与java不同。 拜托,有人帮我!非常感谢)) 更新 最终结果是 问题答案: 对于此PHP正则表达式: 在Jav

  • 问题内容: 有没有办法将JavaScript正则表达式转换为Java安全正则表达式? 上面的语句给了我错误: 我对正则表达式不是很熟悉,因此我可以使用一些指导。 谢谢! 问题答案: 摆脱正斜杠。您不需要Java中的代码。而且,Java的正则表达式风格无法识别诸如和的开关。这些由中的常量控制。 在Java世界中唯一有意义的Javascript正则表达式开关是和。它们映射到和(您可以在从类中创建正则表

  • 我试图将我的Javascript撰写函数翻译成Python,但我对最后一个有问题。我如何推广未知数量的函数? 读完本文后,我想避免使用方法。 javascript: 蟒蛇: 感谢所有的改进。。。

  • 所以我有了这个javascript函数,我想把它转换成一个java函数。这是最初的功能: 我正在使用这个库http://kevinsawicki.github.io/http-request/创建http请求,到目前为止,我有以下内容: 我认为我的头球是正确的,我唯一的问题是我的身体有问题。我不理解大部分的请求,因为我现在才刚刚开始学习这个,我很想自己做这个程序,但是我真的被这部分卡住了。另外,我

  • 问题内容: 我有一个包含几个整数的数组。我已经向数组添加了一些值,但是现在我需要通过jQuery的方法将此数组发送到页面。如何将其转换为JSON对象进行发送? 问题答案: 并致电: 注意: _JSON对象现在是大多数现代Web浏览器(IE 8及更高版本)的一部分。

  • 问题内容: 我如何以这种格式转换PHP数组 到以下格式的Javascript数组? 问题答案: 安全声明: 您不再需要以下内容 如果您没有PHP 5.2,则可以使用以下代码: