java - 使用分隔符进行标记

标签 java regex tokenize delimiter

我正在尝试将源代码分隔为标记,我希望将分隔符 \\s|+;,{}[] 标记化。但我不知何故失败了,有什么建议吗?

public void tokenize() {
         StringTokenizer st = new StringTokenizer(this.sourceCode, "\\s+|[;{}\\[\\]]", true);

        int counter = 0;

        while (st.hasMoreElements()) {
          String token= (String) st.nextElement();
          tokenizedCode.put(counter, token.trim());
          counter++;
        }
}

编辑:注意:该分隔符没有正确标记我所期望的

我希望将 int a=10; 标记为 int,a,=,10

最佳答案

StringTokenizer 类的构造函数不采用正则表达式作为参数,因此您可以这样做:

StringTokenizer st = new StringTokenizer(this.sourceCode, " ;{}[]=", true);

请注意,StringTokenizer 是一个遗留类,出于兼容性原因而保留,尽管不鼓励在新代码中使用它。建议任何寻求此功能的人使用 String 的 split 方法或 java.util.regex 包。 例如:

String[] result = this.sourceCode.split("\\s+|[;{}\\[\\]]");
for (String str : result) {
     System.out.println(str);
}

关于java - 使用分隔符进行标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19631122/

相关文章:

python - 如何在Python中提取特定模式

mysql - 如何对mysql数据库中的字符串进行标记

regex - 正则表达式否定?

python - 使用 NLTK 和 pandas 按 3 个句子对文本进行标记

python - 如何处理标记化错误?

java - 方法意外返回 null

java - 如何在java中给出FTP地址?

带有空参数的 Java 方法分派(dispatch)

java - 如何生成与 Jsoup 中特定元素匹配的 XPath 查询?

java - 来自/etc/passwd 和/etc/group 的行的正则表达式