Java 如何使用正则表达式拆分此字符串?
我要拆分此字符串:Java 如何使用正则表达式拆分此字符串?,java,regex,split,Java,Regex,Split,我要拆分此字符串: 5+(4/2)-4+1+(4%3)!=23+(3*5) 使用regex进入列表 输出应为: [5 , + , ( , 4 , / , 2 , ) , - , 4 , + , 1 , + , ( , 4 , % , 3 , != , 23 , + , ( , 3 , * , 5 , ) ] 注释:我的问题完全是与不等于运算符, ReXEX 不认为它是单个字符< /p> 做匹配而不是拆分。< /P> List<String> list = new ArrayLis
5+(4/2)-4+1+(4%3)!=23+(3*5)
使用regex
进入列表
输出应为:
[5 , + , ( , 4 , / , 2 , ) , - , 4 , + , 1 , + , ( , 4 , % , 3 , != , 23 , + , ( , 3 , * , 5 , ) ]
注释:我的问题完全是与<代码>不等于运算符,<代码> ReXEX <代码>不认为它是单个字符< /p>
做匹配而不是拆分。< /P>
List<String> list = new ArrayList<String>();
Matcher m = Pattern.compile("[^\\w()]?=|\\w+|\\W").matcher(s);
while(m.find()) {
list.add(m.group())
}
System.out.println(list);
List List=new ArrayList();
匹配器m=Pattern.compile(“[^\\w()]”?=|\\w+|\\w”).Matcher(s);
while(m.find()){
list.add(m.group())
}
系统输出打印项次(列表);
进行匹配而不是拆分
List<String> list = new ArrayList<String>();
Matcher m = Pattern.compile("[^\\w()]?=|\\w+|\\W").matcher(s);
while(m.find()) {
list.add(m.group())
}
System.out.println(list);
List List=new ArrayList();
匹配器m=Pattern.compile(“[^\\w()]”?=|\\w+|\\w”).Matcher(s);
while(m.find()){
list.add(m.group())
}
系统输出打印项次(列表);
请试试这个
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
String s="5+(4/2)-4+1+(4%3)!=23+(3*5)";
String s3 = "";
char c = 0;
List a1 = new ArrayList();
for(int i=0;i<s.length();i++)
{
char temp=c;
c=s.charAt(i);
String s1= Character.toString(c);
String s2= Character.toString(temp);
if((s1.equals("=") && s2.matches("!")))
{
s1=s2+s1;
a1.add(s1);
}
else if(s1.matches("[0-9]+") ||(s1.equals("+") ||s1.equals("-") ||s1.equals("*") ||s1.equals("/") ||s1.equals("%")||s1.equals("(")||s1.equals(")")) )
{
if(s1.matches("[0-9]+") )
{
s3=s3+s1;
}
else if(s1.equals("+") ||s1.equals("-") ||s1.equals("*") ||s1.equals("/") ||s1.equals("%") ||s1.equals("(") ||s1.equals(")") )
{
if(s3!="")
{
a1.add(s3);
}
a1.add(s1);
s3="";
}
}
}
System.out.println(a1);
}
}
import java.util.ArrayList;
导入java.util.List;
公开课考试{
公共静态void main(字符串[]args){
字符串s=“5+(4/2)-4+1+(4%3)!=23+(3*5)”;
字符串s3=“”;
字符c=0;
列表a1=新的ArrayList();
对于(int i=0;i请尝试此项
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
String s="5+(4/2)-4+1+(4%3)!=23+(3*5)";
String s3 = "";
char c = 0;
List a1 = new ArrayList();
for(int i=0;i<s.length();i++)
{
char temp=c;
c=s.charAt(i);
String s1= Character.toString(c);
String s2= Character.toString(temp);
if((s1.equals("=") && s2.matches("!")))
{
s1=s2+s1;
a1.add(s1);
}
else if(s1.matches("[0-9]+") ||(s1.equals("+") ||s1.equals("-") ||s1.equals("*") ||s1.equals("/") ||s1.equals("%")||s1.equals("(")||s1.equals(")")) )
{
if(s1.matches("[0-9]+") )
{
s3=s3+s1;
}
else if(s1.equals("+") ||s1.equals("-") ||s1.equals("*") ||s1.equals("/") ||s1.equals("%") ||s1.equals("(") ||s1.equals(")") )
{
if(s3!="")
{
a1.add(s3);
}
a1.add(s1);
s3="";
}
}
}
System.out.println(a1);
}
}
import java.util.ArrayList;
导入java.util.List;
公开课考试{
公共静态void main(字符串[]args){
字符串s=“5+(4/2)-4+1+(4%3)!=23+(3*5)”;
字符串s3=“”;
字符c=0;
列表a1=新的ArrayList();
对于(int i=0;我如何处理您当前的正则表达式?@BalwinderSingh(?您当前的正则表达式是什么?@BalwinderSingh(?“[^\\w()]”?=\\\w+\\\w”
“[^\\w()]”?=\\\w+\\\w”
这对我也没有帮助,但我得到的输出如下:-“[5,+,(,4,/,2,),-,4,+,1,+,(,4,%这是你期望的输出吗?是的,但是这段代码使程序更复杂。这对我也没有帮助,但是我得到的输出如下:“[5,+,(,4,/,2,),-,4,+,1,+,(,4,%,3,),!=,23,+,(,3,*,5,)]”这是你期望的输出吗?是的,但这段代码使程序更复杂。