阅读 Java 中括号内的内容?
Reading contents inside brackets in Java?
我正在尝试从 Java 中的文件中读取一些信息,文件内容的格式如下:
InitialState [+A(B),+C(D)]
GoalState [-A(B),+C(D),-E(F)]
我试图遍历文件并只获取括号内的内容,所以我创建的数组应该如下所示:
initial = ['+A(B)', '+C(D)']
goal = ['-A(B)', '+C(D)', '-E(F)']
我应该使用正则表达式来执行此操作吗?到目前为止,我有
if (line.charAt(0) == 'I') {
String[] initialStateString = (line.subString(line.subString(13, line.length() - 1)).split(","));
for (String s: initialStateString) {
initialState.add(s);
}
}
if (line.charAt(0) == 'G') {
String[] goalStateString = (line.subString(line.subString(11, line.length() - 1)).split(","));
for (String s: goalStateString) {
goalState.add(s)''
}
}
我相信这基本上是在括号之后开始子字符串的索引,但我想使用只包含括号内容的东西,因为我相信这会更健壮。谢谢。
试试这个代码:
public static void main(String[] args) {
String s = "InitialState [+A(B),+C(D)]";
String s1 ="GoalState [-A(B),+C(D),-E(F)]";
Pattern p = Pattern.compile("([+-]\w\(\w\))");
Matcher m = p.matcher(s);
while(m.find()){
System.out.print(m.group(1)+" ");
}
System.out.println();
m = p.matcher(s1);
while(m.find()){
System.out.print(m.group(1)+" ");
}
}
输出:
+A(B) +C(D)
-A(B) +C(D) -E(F)
正则表达式的解释:
[+-] : Match "+" or "-" character.
\w : Match any word character.
\( : Match "(".
\) : Match ")"
我正在尝试从 Java 中的文件中读取一些信息,文件内容的格式如下:
InitialState [+A(B),+C(D)]
GoalState [-A(B),+C(D),-E(F)]
我试图遍历文件并只获取括号内的内容,所以我创建的数组应该如下所示:
initial = ['+A(B)', '+C(D)']
goal = ['-A(B)', '+C(D)', '-E(F)']
我应该使用正则表达式来执行此操作吗?到目前为止,我有
if (line.charAt(0) == 'I') {
String[] initialStateString = (line.subString(line.subString(13, line.length() - 1)).split(","));
for (String s: initialStateString) {
initialState.add(s);
}
}
if (line.charAt(0) == 'G') {
String[] goalStateString = (line.subString(line.subString(11, line.length() - 1)).split(","));
for (String s: goalStateString) {
goalState.add(s)''
}
}
我相信这基本上是在括号之后开始子字符串的索引,但我想使用只包含括号内容的东西,因为我相信这会更健壮。谢谢。
试试这个代码:
public static void main(String[] args) {
String s = "InitialState [+A(B),+C(D)]";
String s1 ="GoalState [-A(B),+C(D),-E(F)]";
Pattern p = Pattern.compile("([+-]\w\(\w\))");
Matcher m = p.matcher(s);
while(m.find()){
System.out.print(m.group(1)+" ");
}
System.out.println();
m = p.matcher(s1);
while(m.find()){
System.out.print(m.group(1)+" ");
}
}
输出:
+A(B) +C(D)
-A(B) +C(D) -E(F)
正则表达式的解释:
[+-] : Match "+" or "-" character.
\w : Match any word character.
\( : Match "(".
\) : Match ")"