在Java中使用Regex进行分组
我是新加入regex的,很抱歉我的noobish问题在Java中使用Regex进行分组,java,regex,grouping,Java,Regex,Grouping,我是新加入regex的,很抱歉我的noobish问题 我的问题是我想在字符串上分组数据 我想要的是ff: a-za-z或a-za-z0-9(例如:abc、bzc15,但不是1abc或14bc) 0-9(例如:1、23、56等) 这些运算符+*-/ 空白处 (和) 我想把它们组合成一个数组,如果可能的话,保留它们的位置 例如: String test = "a + b + 6"; 结果应该是这样的 Array[0] = a Array[1] = White Space Array[2] = +
我的问题是我想在字符串上分组数据 我想要的是ff:
a-z
a-z
或a-z
a-z
0-9(例如:abc、bzc15,但不是1abc或14bc)0-9
(例如:1、23、56等)+
*-
/
(
和)
String test = "a + b + 6";
结果应该是这样的Array[0] = a
Array[1] = White Space
Array[2] = +
Array[3] = White Space
Array[4] = b
Array[5] = White Space
Array[6] = +
Array[7] = White Space
Array[8] = 6
这可能吗?如果是,我应该使用什么模式任何帮助都将收到通知请尝试以下操作:
char[] charArr = test.toCharArray();
String[] array = test.split("((?<=\\S)(?=\\s))|((?<=\\s)(?=\\S))");
例如:
public static void main(String[] args) {
String test = "a + b + 6";
char[] charArr = test.toCharArray();
System.out.println(Arrays.toString(charArr));
}
输出:
[a, , +, , b, , +, , 6]
试试这个:
char[] charArr = test.toCharArray();
String[] array = test.split("((?<=\\S)(?=\\s))|((?<=\\s)(?=\\S))");
例如:
public static void main(String[] args) {
String test = "a + b + 6";
char[] charArr = test.toCharArray();
System.out.println(Arrays.toString(charArr));
}
输出:
[a, , +, , b, , +, , 6]
试试这个:
char[] charArr = test.toCharArray();
String[] array = test.split("((?<=\\S)(?=\\s))|((?<=\\s)(?=\\S))");
String[]array=test.split(((?试试这个:
char[] charArr = test.toCharArray();
String[] array = test.split("((?<=\\S)(?=\\s))|((?<=\\s)(?=\\S))");
String[]array=test.split(((?我在这里猜测,但我认为您想要解析数学语句,或者换句话说,您正在尝试执行词法分析-)
您可能想考虑java开发的一个完全的词法分析/ PARSIER生成器,它是一个简单的解决方案,我唯一使用的是CUP,它非常容易使用。
另一方面,您需要编写一些自定义解析器代码
String[]array=test.split(((?我在这里猜测,但我认为您想要解析数学语句,或者换句话说,您正在尝试执行词法分析-)
您可能想考虑java开发的一个完全的词法分析/ PARSIER生成器,它是一个简单的解决方案,我唯一使用的是CUP,它非常容易使用。
另一方面,您需要编写一些自定义解析器代码
String[]array=test.split((?我想这个正则表达式可以满足您的需要:
"((?<=\\d)(?=\\p{Alpha}))|((?<=\\w)(?=\\W))|((?<=\\W)(?=\\w))|((?<=\\W)(?=\\W))"
((?我认为这个正则表达式可以满足您的需要:
"((?<=\\d)(?=\\p{Alpha}))|((?<=\\w)(?=\\W))|((?<=\\W)(?=\\w))|((?<=\\W)(?=\\W))"
((?您可以使用test.toCharArray()获取字符数组的每个元素并将其转换为int,然后从ANSI图表中获取其表示形式并输出,如果使用test.tochararry()可能比regexIf更简单)
我不能用这样的东西来分组数据ab+b
请看我的答案,你需要一个解析器来完成你建议的任务,除非你想强迫你的用户使用一大堆额外的空格。你可以使用test.tocharray()可能获取字符数组的每个元素并将其转换为int,然后从ANSI图表中获取其表示形式并输出,这可能比我使用的regexIftest.tochararry()更容易
我不能用这样的东西来分组数据ab+b
请看我的答案,你需要一个解析器来完成你建议的任务,除非你想强迫你的用户使用一大堆额外的空格。哇,你明白了,兄弟。但是你能给我解释一下模式吗?我没想到模式会这么短。伙计谢谢,你明白了吗,兄弟。但是你能给我解释一下这个模式吗?我没想到这个模式会这么短。很多人都觉得你的观点很好。但是我的任务是开发我自己的词法分析器,所以我真的不能用一个现成的项目。无论如何,谢谢,我想投票支持你的帖子,但为什么我不能?我看到你的观点很好。B但是我的任务是开发我自己的词法分析器,所以我真的不能使用一个现成的项目。无论如何,谢谢,我想投票支持你的帖子,但为什么我不能?如果我使用test.tochararry()我不能用这样的ab+b
来分组数据。无论如何,如果我使用test.tochararry()我就要感谢你了我不能用这样的ab+b
对数据进行分组。无论如何,谢谢