用于标记字符串的Java正则表达式

用于标记字符串的Java正则表达式,java,regex,Java,Regex,这是我的源字符串 substrb ( userenv ( 'CLIENT_INFO' ) , 1 , 1 ) , '' , null , substrb ( 'some_text' , 1 , 10 ) 我想用下面的形式标记它 [1] : substrb ( userenv ( 'CLIENT_INFO' ) , 1 , 1 ) [2] : '' [3] : null [4] : substrb ( 'some_text' , 1 , 10 ) 知道怎么做吗 谢谢我建议为此编写一个解析

这是我的源字符串

substrb ( userenv ( 'CLIENT_INFO' ) , 1 , 1 ) , '' , null , substrb ( 'some_text'  , 1 , 10 ) 
我想用下面的形式标记它

[1] : substrb ( userenv ( 'CLIENT_INFO' ) , 1 , 1 )
[2] : ''
[3] : null
[4] : substrb ( 'some_text'  , 1 , 10 )
知道怎么做吗


谢谢

我建议为此编写一个解析器。您所需要做的就是计算当前打开括号的数量,如果有逗号且计数器为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());
int open方括号=0;
ArrayList标记=新的ArrayList();
StringBuilder tmp=新的StringBuilder();
对于(int i=0;i0)tokens.add(tmp.toString());

我建议为此编写一个解析器。您所需要做的就是计算当前打开括号的数量,如果有逗号且计数器为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());
int open方括号=0;
ArrayList标记=新的ArrayList();
StringBuilder tmp=新的StringBuilder();
对于(int i=0;i0)tokens.add(tmp.toString());