gpt4 book ai didi

java - 正确的正则表达式模式是什么?

转载 作者:行者123 更新时间:2023-11-29 07:25:26 26 4
gpt4 key购买 nike

我正在从 Hackerrank 解决这个问题

https://www.hackerrank.com/contests/find-google/challenges/find-google/problem

并想出了这个模式“^[gG][o0O()\[\]{}][o0O()\[\]{}][gG][lLI][eE3]”但这对测试用例 g()()GI3 给出了错误的答案。谁能告诉我错误?还告诉我是否有更有效的表达方式。

    import java.util.regex.*;
import java.io.*;
import java.util.*;
class Main {

public static void main (String[] args) {
Scanner s = new Scanner(System.in);
String str = s.next();
Pattern pattern = Pattern.compile("^[gG][o0O()\\[\\]{}][o0O()\\[\\]{}][gG][lLI][eE3]",Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(str);
if(matcher.matches())
System.out.println("YES");
else System.out.println("NO");
}}

最佳答案

当前正则表达式的问题是 [] , ()<>被放入匹配其中单个字符的字符类中,但是 () , <>[] char sequences 由 2 个字符组成。

您需要在此处使用带有交替运算符的分组构造来匹配 o

您可以将此模式与 Pattern.matches() 一起使用:

Pattern pattern = Pattern.compile("[gG](?:[oO0]|\(\)|\[]|<>){2}[gG][LlI][eE3]");

参见 regex demo

详情

  • [gG] - gG
  • (?:[oO0]|\(\)|\[]|<>){2} - 两次出现
    • [o0] - o , O0
    • | - 或者
    • \(\) - 一个 ()子串
    • | - 或者
    • \[] - 一个 []子串
    • | - 或者
    • <> - 一个 <>子串
  • [gG] - gG
  • [LlI] - l , LI
  • [eE3] - e , E3 .

关于java - 正确的正则表达式模式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53987537/

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