当前位置: 首页 > 面试题库 >

在Java中使用正则表达式拆分字符串

龚德本
2023-03-14
问题内容

我是regex的新手,我想做的是在特定条件下拆分String,但我不知道该怎么做。

这是样品/条件

String str = sum1=x+(5+a)

Array[0] = sum1
Array[1] = =
Array[2] = x
Array[3] = +
Array[4] = (
Array[5] = 5
Array[6] = +
Array[7] = a
Array[8] = )

我希望字符串被拆分+-*\()=
这可能吗?


问题答案:

如果 确实 需要使用正则表达式,则可能应该使用环顾四周机制,因为您不想 此字符 之前之后 进行拆分。

String str = "sum1=x+(5+a)";
String[] array=str.replaceAll("\\s+","")//remove all spaces
                  .split("(?<=[+\\-*\\\\()=/])|(?=[+\\-*\\\\()=/])");
for (int i=0; i<array.length; i++)
    System.out.println("Array["+i+"] = "+array[i]);

输出:

Array[0] = sum1
Array[1] = =
Array[2] = x
Array[3] = +
Array[4] = (
Array[5] = 5
Array[6] = +
Array[7] = a
Array[8] = )


 类似资料:
  • 使用Java和正则表达式,我想从一行文本中提取字符串。文本可以采用以下格式- 键1(值1)键2(值2) 当使用类型#1时,我能够成功地提取键和值,我可以使用空格分割文本,然后使用以下模式提取键 对于案例#2和案例#3,可以使用复杂的代码逻辑来计算“(”的出现,并将其与空格的出现相匹配,但是,代码变得太长了。当值中也存在空格时,会出现多种复杂情况,因为这样,分割文本就会出现问题。 有没有更好的正则表

  • 我试图匹配正则表达式模式来替换特定字符串。 示例文本:ABC/1111111 031111111/0318*12345678 我想用“/1222”替换03和18 in/0318,即(2022年12月)。我尝试了string replaceAll方法,但它替换了提供的示例字符串中所有匹配的字符。比如下面; 我尝试过的示例代码: 样本文本。替换(匹配器组(2),“12”); 样本文本。替换(匹配器组(

  • 问题内容: 我有一个字符串,需要根据出现的“,”(逗号)进行拆分,但是需要忽略在一对括号内出现的任何字符串。例如, 应拆分为 问题答案: 对于非嵌套 嵌套 (括号内的括号)

  • 上下文:我需要拆分太长的字符串,这些字符串用作html表中的列标题。这些字符串是变量名,因此它们中没有空格。 如果让css属性执行此操作,则字符串将在固定位置拆分,而不是使用字符串中的点或。 例如,假设我有以下字符串: 使用点作为分隔符,我可以用很多很多不同的方法来分割它。但我提出了以下指导原则: 所有子串必须为12个字符或更少 分隔符[。_]应该在子字符串的末尾,而不是开头 子串的数量必须最小

  • 我有一个在解析XML文档时收到的字符串: 如何使用正则表达式来完成? 多谢帮忙!

  • 我有一个表格形式的命令输出。我正在解析结果文件的输出并将其存储在字符串中。一行中的每个元素由一个或多个空格字符分隔,因此我使用正则表达式匹配1个或多个空格并拆分它。但是,在每个元素之间插入一个空格: 还有更好的方法吗? 每次拆分后,str2都会附加到列表中。