java - 括号中字母或数字的正则表达式

标签 java regex

我正在使用 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)。

两个问题:

  1. 如何修复此正则表达式并能够匹配多个组?
  2. 我怎样才能分别获得单独的匹配项(例如单独的 (aaa) 然后 (111) 等等)。我试过 pattern.split 但对我不起作用。

最佳答案

首先,您想用另一个反斜杠转义引号中的任何反斜杠。正则表达式会将其视为单个反斜杠。 (例如用引号等将单词字符称为\w)

其次,您必须完成以下行:

String w = pattern.

该行解释了为什么它不能编译。

关于java - 括号中字母或数字的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21415809/

相关文章:

java - 使用反射方法设置EditText光标颜色

java - 在 play 2 框架中创建 scala.html 文件

java - Kotlin 语法困惑 : fun Foo. bar() = (...)

java - 将 JSON 转换为 XML,而不将十进制转换为科学记数法

c# - C#中的正则表达式解析为双数组

sql - 从字符串/文本 SQL Server 中提取 float

regex - 如何提取文件中的字符串并替换特定的模式文本

java - 如何表示反斜杠

java - 替换文本匹配正则表达式的子字符串

java - 如何将字节数组转换为日语字符