字符串{abc {def {ghi{jk} } } },怎么把里面的值一个个输出出来,Java代码示例
时间: 2023-07-24 08:47:23 浏览: 102
你可以使用正则表达式来匹配字符串中的每个值,然后将其输出。这里是Java代码示例:
```java
String str = "{abc {def {ghi{jk} } } }";
Pattern pattern = Pattern.compile("\\{([^\\{\\}]*)\\}");
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
String value = matcher.group(1).trim();
System.out.println(value);
}
```
输出结果为:
```
abc
def
ghi{jk}
```
解释一下代码:首先,使用正则表达式`\\{([^\\{\\}]*)\\}`来匹配字符串中的每个值,其中`\\{`和`\\}`表示左右花括号,`[^\\{\\}]*`表示除了花括号外的任意字符,`()`表示将匹配到的值存入一个组中,方便后续提取。然后,使用Matcher类来查找字符串中匹配的值,并将其输出。注意,由于匹配到的值中可能存在空格,使用`trim()`方法将其去除。
相关问题
String a ="abc{def{abcd{12345678}}ghi}jk";已知字符串123,怎么把123所在的大括号中的数据在字符串a取出来
可以使用正则表达式来匹配大括号中的内容,然后再从匹配到的结果中取出包含123的部分。具体实现可以参考以下代码:
```java
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String a = "abc{def{abcd{12345678}}ghi}jk";
String patternStr = "\\{[^{}]*123[^{}]*\\}";
Pattern pattern = Pattern.compile(patternStr);
Matcher matcher = pattern.matcher(a);
if (matcher.find()) {
String matchedStr = matcher.group();
String result = matchedStr.substring(1, matchedStr.length() - 1);
System.out.println(result);
}
}
}
```
运行结果为:
```
abcd{12345678}
```
String a ="abc{def{abcd{12345678}}ghi}jk";已知字符串a1=123,怎么把a1所在的大括号中的数据在字符串a取出来,只需要大括号中的数据
可以使用正则表达式来匹配大括号中的内容,然后再从匹配结果中取出需要的数据。下面是一个Java代码示例:
```java
import java.util.regex.*;
public class Main {
public static void main(String[] args) {
String a = "abc{def{abcd{12345678}}ghi}jk";
String a1 = "123";
// 使用正则表达式匹配大括号中的内容
Pattern pattern = Pattern.compile("\\{([^\\{\\}]*)\\}");
Matcher matcher = pattern.matcher(a);
while (matcher.find()) {
String match = matcher.group(1);
if (match.contains(a1)) {
System.out.println(match);
break;
}
}
}
}
```
上述代码中,使用正则表达式 `\{([^{}]+)\}` 匹配大括号中的内容,然后使用 `Matcher` 类的 `find()` 方法查找匹配结果。如果匹配结果中包含了目标字符串 `a1`,则输出匹配结果并结束循环。注意,这里使用了正则表达式中的非贪婪模式 `+?`,以确保匹配结果不包含其他大括号中的内容。
阅读全文