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

IP模式检查的正则表达式在Java返回false

马权
2023-03-14

我一直在尝试检查Json中是否存在IP模式或未使用Java。但是,模式匹配器返回 false。以下是我的代码片段

String responseJsonData = "{\"ip\":127.0.0.1}";
or
String responseJsonData = "{\"127.0.0.1\":201}";

String ipPattern = "\\d+\\.\\d+\\.\\d+\\.\\d+";
boolean ipPatternRegex = rgxptrn.compileRegexPatternWithMatcher(ipPattern, responseJsonData);
System.out.println(ipPatternRegex);
Assert.assertFalse(ipPatternRegex, "JSON String Contains IP Patterns");
        
        Pattern pattern = Pattern.compile(regexPattern);
        Matcher match = pattern.matcher(jsonString);
        System.out.println("Pattern Result is : " + match.matches());
        return match.matches();
    }

responseDataInput返回false。如何使用正则表达式强行搜索IP模式匹配?

共有1个答案

姚善
2023-03-14

您的模式是正确的。问题是您使用的是Matcher#匹配而不是Matcher#查找

演示:

import java.util.regex.Pattern;
import java.util.stream.Stream;

public class EntryPoint {

    public static void main(String[] args) {
        Pattern pattern = Pattern.compile("\\d+\\.\\d+\\.\\d+\\.\\d+");
        
        Stream.of(
                    "{\"ip\":127.0.0.1}",
                    "{\"127.0.0.1\":201}",
                    "{\"127.a.0.1\":201}"
                ).forEach(s -> System.out.println(s + " => " + pattern.matcher(s).find()));
    }   
}

输出:

{"ip":127.0.0.1} => true
{"127.0.0.1":201} => true
{"127.a.0.1":201} => false
 类似资料:
  • 问题内容: 我有几个IP地址,例如: 如果要搜索所有3个ip地址,应该写哪种类型的正则表达式?例如,如果我这样做(我将能够搜索所有3个IP地址) 我现在可以做的事情是这样的:但是它似乎不能很好地工作。 谢谢。 问题答案: 您所拥有的正则表达式已经有几个问题: 首先,它包含点。在正则表达式中,点表示“匹配任何字符”,您只需要匹配实际的点。为此,您需要对其进行转义,因此请在圆点前面加上反斜杠。 其次,

  • 问题内容: 我需要这件事的帮助。查看以下正则表达式: 我想查找这样的词:“自制”,“ aaaa-bbb”而不是“ aaa-bbb”,而 不是 “ aaa–aa–aaa”。基本上,我想要以下内容: 单词-连字符-单词。 它适用于所有内容,但该模式会通过:“ aaa–aaa–aaa”,但不应通过。哪种正则表达式适用于此模式? 问题答案: 可以从表达式中删除反斜杠: 下面的代码应该工作 请注意,您可以使

  • 我需要编写一个具有以下规则的正则表达式: null null 这些示例无效: > 12--11(因为它包含两个连字符) 1-2345(因为它包含5号) <>是字符出现在最后一个位置,那么在字符之前必须有一个数字not hypen。 即11-A(必须不及格)11-1A(必须及格)

  • 我是正则表达式的初学者,并尝试搜索特定的数字模式。以下数据以 XML 格式嵌入。 要求是提取数据(最里面的列表)。在这个例子中,数据从24779开始到24760。注意:每次数据可能不是从“24”开始。因此,我计划通过以下逻辑提取:如果标签名(在本例中:DUT_1_PC)具有非零的有效数据,并且有效数据的计数大于100,用逗号分隔,则提取该列表及其标签名(DUT_1_PC)。 我无法提取所需的数据。

  • 问题内容: 使用Python正则表达式如何获得/返回?所有Python回报是: 问题答案: 对象始终为true,如果不匹配,则返回。只是测试真实性。

  • 目标: 使用正则表达式仅显示路径的实际文件夹名称。例如, 应该减少到 应该有进一步的规则来防止用户将驱动器作为文件夹输入。 问题: > 条件返回,我不知道为什么。 的行抛出了一个 ArgumentException 告诉我(粗略翻译)在分析序列 时,“有一个未完成的 [] 子句”。 我的想法: > 我选择的任何编辑器都将“C:\”标记为指定表达式的匹配项。 中的双反斜杠可能被视为实际转义右方括号,