当前位置: 首页 > 知识库问答 >
问题:

不匹配的Java模式REGEX

黎震博
2023-03-14
import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class RegexUtil {

   public static void main(String[] args) {

      String    argument;
      Pattern   pattern;
      Matcher   matcher;

      argument = "#a1^b2";
      pattern = Pattern.compile("[a-zA-Z]|[0-9]|\\s");
      matcher = pattern.matcher(argument);

      // find all matching characters
      while(matcher.find()) {
         System.out.println(matcher.group());
      }

   }

}
a
1
b
2
#
^

或者更好的方法是遍历它,为参数的每个索引获取TRUE或FALSE标志

false
true
true
false
true
true

我只知道如何使用matcher.find()进行循环,如果有任何帮助,我将不胜感激

共有1个答案

李景天
2023-03-14

您可以在模式中添加(.)选项(以匹配除换行字符以外的任何字符),并在每次匹配时检查组1是否匹配。如果是,输出false,否则,输出true:

String argument = "#a1^b2";
Pattern pattern = Pattern.compile("[a-zA-Z]|[0-9]|\\s|(.)"); // or "[a-zA-Z0-9\\s]|(.)"
Matcher matcher = pattern.matcher(argument);

while(matcher.find()) {                           // find all matching characters
    System.out.println(matcher.group(1) == null);

请参见Java演示输出:

false
true
true
false
true
true

注这里不需要使用pattern.dotall,因为模式的“白名单”部分中的\s匹配换行符。

 类似资料:
  • 我想知道为什么这个regex组在Java中不适合我?它在寻找组匹配时抛出异常。我正试着把用破折号隔开的数字匹配起来。

  • 这是一个示例文本:。我无法修改输入文本,我正在从文件中读取长字符串文本。 我想提取以下内容:,,, 为此,我编写了以下正则表达式模式: 我正在使用和类,但是我的Matcher无法使用前面提到的正则表达式找到模式。我在一些在线regex网站上用文本测试了这个regex,令人惊讶的是,它在那里工作。 我哪里做错了? 原始代码: 输出:未打印任何内容

  • 本文向大家介绍java模式匹配之蛮力匹配,包括了java模式匹配之蛮力匹配的使用技巧和注意事项,需要的朋友参考一下 java模式匹配之蛮力匹配 使用示例: 以上所述就是本文的全部内容了,希望大家能够喜欢。

  • 我是不是漏掉了什么?提前感谢!

  • 我对Regex还比较陌生,觉得我错过了一些重要的东西。 我的模式<code>id='([a-zA-Z0-9])IFrame[id='frame'].leftObject中获取单词“frame”。 这是我正在使用的模式和代码的链接。https://regex101.com/r/MmkGZq/2 这是否与C#中的正则表达式与Java中的正则表达式不同有关?

  • 我在angular 5中实现了一个模式,在.ts文件中使用以下代码进行密码验证。这样做的目的是支持至少八个字符,至少一个大写字母、一个小写字母、一位数字和一个特殊字符。请参阅:密码的Regex必须包含至少八个字符、至少一个数字以及大小写字母和特殊字符 我明白了,当我在密码文本框中输入一个字符串时,例如< code>Niladri1!然而,当我输入一个类似于< code>Nopasss123!!,它