gpt4 book ai didi

Java 模式 REGEX 不匹配的地方

转载 作者:行者123 更新时间:2023-11-30 02:14:00 26 4
gpt4 key购买 nike

我正在尝试使用 Java 模式和匹配器来应用输入检查。我让它以一种非常基本的格式工作,到目前为止我对此很满意。它将 REGEX 应用于参数,然后循环匹配的字符。

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 组是否在每次匹配时匹配。如果是,则输出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 demo ,输出:

false
true
true
false
true
true

请注意,您不需要在此处使用 Pattern.DOTALL,因为模式的“白名单”部分中的 \s 与换行符匹配。

关于Java 模式 REGEX 不匹配的地方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49194833/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com