有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java中的字符串模式匹配

我想在输入字符串中搜索给定的字符串模式

例如

String URL = "https://localhost:8080/sbs/01.00/sip/dreamworks/v/01.00/cui/print/$fwVer/{$fwVer}/$lang/en/$model/{$model}/$region/us/$imageBg/{$imageBg}/$imageH/{$imageH}/$imageSz/{$imageSz}/$imageW/{$imageW}/movie/Kung_Fu_Panda_two/categories/3D_Pix/item/{item}/_back/2?$uniqueID={$uniqueID}"

现在我需要搜索字符串URL是否包含“/{item}/”。请帮帮我

这是一个例子。实际上,我需要检查URL是否包含匹配“/{a-zA-Z0-9}/”的字符串


共 (4) 个答案

  1. # 1 楼答案

    这只是一个^{}的问题:

    if (input.contains("{item}"))
    

    如果你需要知道它发生在哪里,你可以使用^{

    int index = input.indexOf("{item}");
    if (index != -1) // -1 means "not found"
    {
        ...
    }
    

    这对于匹配精确的字符串很好——如果你需要真正的模式(例如“三位数后最多两个字母A-C”),那么你应该查看regular expressions

    编辑:好的,听起来你想要正则表达式。你可能想要这样的东西:

    private static final Pattern URL_PATTERN =
        Pattern.compile("/\\{[a-zA-Z0-9]+\\}/");
    
    ...
    
    if (URL_PATTERN.matches(input).find())
    
  2. # 2 楼答案

    您可以使用Pattern类来实现这一点。如果只想匹配{}中的单词字符,那么可以使用以下正则表达式\w[a-zA-Z0-9_]的缩写。如果你对_没问题,那么就用\w或者用[a-zA-Z0-9]

    String URL = "https://localhost:8080/sbs/01.00/sip/dreamworks/v/01.00/cui/print/$fwVer/{$fwVer}/$lang/en/$model/{$model}/$region/us/$imageBg/{$imageBg}/$imageH/{$imageH}/$imageSz/{$imageSz}/$imageW/{$imageW}/movie/Kung_Fu_Panda_two/categories/3D_Pix/item/{item}/_back/2?$uniqueID={$uniqueID}";
    Pattern pattern = Pattern.compile("/\\{\\w+\\}/");
    Matcher matcher = pattern.matcher(URL);
    if (matcher.find()) {
        System.out.println(matcher.group(0)); //prints /{item}/
    } else {
        System.out.println("Match not found");
    }
    
  3. # 3 楼答案

    如果要检查某个字符串是否存在于另一个字符串中,请使用 String.contains

    如果要检查某个模式是否存在于字符串中,请在该模式的前面加上“.*”。结果将接受包含该模式的字符串

    例如:假设您有一些正则表达式a(b | c),用于检查字符串是否匹配abac
    .*(a(b|c)).*将检查字符串是否包含abac

    这种方法的一个缺点是,它不会给你匹配的位置,你可以使用java。util。马瑟。如果需要匹配的位置,请查找()

  4. # 4 楼答案

    你可以用string.indexOf("{item}")来做。如果结果大于-1 ^{,则字符串中的值为