Java Regex用于标记字符串

Ali*_*Ali 0 java regex

这是我的源字符串

substrb ( userenv ( 'CLIENT_INFO' ) , 1 , 1 ) , '' , null , substrb ( 'some_text'  , 1 , 10 ) 
Run Code Online (Sandbox Code Playgroud)

我想以下面的形式对其进行标记

[1] : substrb ( userenv ( 'CLIENT_INFO' ) , 1 , 1 )
[2] : ''
[3] : null
[4] : substrb ( 'some_text'  , 1 , 10 )
Run Code Online (Sandbox Code Playgroud)

任何想法怎么做?

谢谢

Til*_*lge 5

我建议为此编写一个解析器.您需要做的就是计算当前打开括号的数量,如果有逗号且计数器为0,则剪切字符串.

有点像这样:

int openBrackets = 0;
ArrayList<String> tokens = new ArrayList<String>();
StringBuilder tmp = new StringBuilder();
for (int i = 0; i < inputString.length; ++i) {
   char cc = inputString.charAt(i);
   if (cc == '(') openBrackets++;
   else if (cc == ')') openBrackets--;
   else if ((cc == ',') && (openBrackets == 0)) {
      tokens.add(tmp.toString());
      tmp.delete(0, tmp.length());
   }
   else tmp.append(cc);
}
if (tmp.length() > 0) tokens.add(tmp.toString());
Run Code Online (Sandbox Code Playgroud)