regex 正则表达式在java中用于分号和逗号作为分隔符,但也考虑在字符串中使用

n6lpvg4x  于 2023-05-01  发布在  Java
关注(0)|答案(1)|浏览(109)

我用java写了一个词法分析器程序。我用空格或分号分割输入字符串,但我真正希望做的是将分号或逗号视为单独的标记,即使在它之前没有空格。
现在我有arr = (str).split("[; ]");
但是当我输入字符串为return a = 25;
字符串被拆分为:[return, a, =, 25]无法识别;或者将其用作分隔符。我试图找到一个正则表达式,但我找不到一个工作。我试图避免StringTokenizer,但如果它是应该使用的东西,不能避免,请让我知道。我对正则表达式是相当陌生的,所以我无法弄清楚它。
我尝试了正则表达式((?<=;)|(?=;)),但它只与分割;不考虑空白。

fiei3ece

fiei3ece1#

与其使用复杂、昂贵的外观和外观后面,我只使用一个词边界:

String[] tokens = str.split(" *\\b *");

这将返回空格作为标记,但您可以很容易地删除它们:

tokens = Arrays.stream(tokens)
    .filter(t -> !t.isBlank()).toArray(String[]::new);

你也可以使用splitAsStream一步完成:

String[] tokens = Pattern.compile(" *\\b *").splitAsStream(str)
    .filter(t -> !t.isBlank()).toArray(String[]::new);

相关问题