有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Regex java用于检查开始[和结束],但可以在开始和结束处\t\r\n

我需要检查字符串是否以[开头,以]结尾,但允许在方括号之前/之后使用空格

我可以使用trim(),然后检查结束字符,但是字符串可能很长(超过100000个字符),因此创建新的修剪字符串可能会很昂贵。我想知道,考虑到较大的字符串大小,提供合理性能的最佳方法是什么

应通过的示例输入:

"\t\n\r      [  (very long string) ] \t \r \n"

使用正则表达式,我得到了下面的表达式,但不知道它是否绝对正确,或者它是否会运行良好

(^|\s+)\[((.*)|\s)+\]($|\s+)

解决这个问题的最佳方法是什么


共 (1) 个答案

  1. # 1 楼答案

    这是一个快速JavaScript版本,也可以轻松应用于Java:

    &13; 第13部分,;
    var result = /^\s*\[[^\]]*\]\s*$/.test('\t\n\r    [...very long string...] \t \r \n');
    console.log('result: ' + result);
    和#13;
    和#13;

    此正则表达式的注释:

    • 使用锚(^$)只允许前导&;尾随空白
    • 使用\s*而不是\s+,因为后者需要对空白进行测试
    • 使用快速的[^\]]*避免使用回溯的昂贵的.*正则表达式