Java 正则表达式 : check if a sentence contains only alphabet and numbers

标签 java regex match

我的以下程序打印了我不明白的奇怪结果,我想这是由于我对 Java Regex 缺乏深入的了解。所以我希望首先按句点拆分 testStr ,然后检查每个句子是否包含字母或数字。但令人惊讶的是,我得到了以下输出,这与我的愿望相反:

blah blah1 is not a character!
 blah blah2 is not a character!
 blah blah3 is not a character!
 ??** is not a character!     // only this output is expected

我的代码如下:

String testStr = "blah blah1. blah blah2. blah blah3. ??**...";
String[] myStrArray = testStr.split("[.]");

System.out.println("length of myStrArray is: " + myStrArray.length);

for (String str : myStrArray) {
    if (!Pattern.matches("\\w+", str)) {
        System.out.println(str + " is not a character!");
        continue;
    }

    System.out.println("got a meaningful sentence " + str.trim());

}

最佳答案

您的程序使用点作为分隔符分割字符串,因此您得到:

blah blah1 
blah blah2 
blah blah3 
??**...

然后您尝试使用正则表达式 \w+匹配每一行。请注意调用match()相当于调用find()但使用包含 ^ 的正则表达式和$ ,即认为您的正则表达式是 ^\w+$

我认为现在很明显您的任何一个字符串都不匹配此模式,因为前 3 个字符串包含空格,最后一个字符串既不包含字母字符也不包含数字。

关于Java 正则表达式 : check if a sentence contains only alphabet and numbers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25956448/

相关文章:

java - 如何在Java中转换重音字符

sql - 转义 JSON 输出的特殊字符

java - 等于和包含有什么区别

struct - 使用 envy 时如何用匹配结果填充结构体实例?

R匹配数据帧不同行中的字符串

java - 从Activity传递参数到doInBackground方法,异步任务

java - 使用Gson解析JSON数字数组

java - 使用 JavaFX 和 FXML 根据通过的标准显示图像

java - 为什么它会跳过 While 循环内的 If 语句?它打印出 "no work",为什么?

java - 子串中的字符串替换