【发布时间】:2013-04-24 21:06:10
【问题描述】:
我需要在 Java 中编写一个方法,该方法可以接受一个字符串文本参数和一个返回字符串数组的字符串“正则表达式”参数数组。
我希望返回的数组基本上做String.split 所做的事情,但是使用多个字符串正则表达式,而不是剥离正则表达式,而是将其保留在数组中。
示例:Input: "int a=10; a++;"Regexes: "int", ";", "++", "="Output: "int", " a", "=", "10", ";", " a", "++", ";"
我尝试了一些方法,包括以下内容,但都没有成功
public static String[] splitIntoBits(String in, String[] regex)
{
List<String> bitList = new ArrayList<String>();
for(int i = 0; i < in.length(); i++)
{
int lastIndex=0;
//Check that character against all regexes
for(int j = 0; j < regex.length; j++)
{
if(in.substring(i).startsWith(regex[j]))
{
bitList.add(in.substring(lastIndex, i));
lastIndex=i;
}
}
}
return bitList.toArray(new String[0]);
}
【问题讨论】:
-
如何处理重叠模式(换句话说,匹配不明确的地方)?
-
您可以在每次拆分后创建一个新的 ArrayList,捕获 String[] 并将它们输入到列表中。然后使用 List 将字符串输入到下一阶段。
-
@durron597 - 我可能会通过更具体地检查正则表达式之前或之后的内容来处理这个问题。
-
如果你真的想解析代码,你需要的不仅仅是 split()。
-
@peter.murray.rust - 我需要什么?