我正在使用 Java 使用正则表达式处理文本。我正在使用以下正则表达式
^[\([0-9a-zA-Z]+\)\s]+
匹配括号中的一个或多个字母或数字一次或多次。例如,我喜欢匹配 (aaa) (bb) (11) (AA) (iv) 或者 (111)(aaaa)(一)(五)
我在 http://java-regex-tester.appspot.com/ 上测试了这个正则表达式它正在工作。但是当我在我的代码中使用它时,代码无法编译。这是我的代码:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Tester {
public static void main(String[] args) {
Pattern pattern = Pattern.compile("^[\([0-9a-zA-Z]+\)\s]+");
String[] words = pattern.split("(a) (1) (c) (xii) (A) (12) (ii)");
String w = pattern.
for(String s:words){
System.out.println(s);
}
}
}
我尝试使用\而不是\但正则表达式给出了与我预期不同的结果(它只匹配一个组,如 (aaa) 而不是多个组,如 (aaa) (111) (ii)。
两个问题:
- 如何修复此正则表达式并能够匹配多个组?
- 我怎样才能分别获得单独的匹配项(例如单独的 (aaa) 然后 (111) 等等)。我试过 pattern.split 但对我不起作用。
最佳答案
首先,您想用另一个反斜杠转义引号中的任何反斜杠。正则表达式会将其视为单个反斜杠。 (例如用引号等将单词字符称为\w)
其次,您必须完成以下行:
String w = pattern.
该行解释了为什么它不能编译。
关于java - 括号中字母或数字的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21415809/