Как сопоставить две строки, используя java Regex - PullRequest
0 голосов
/ 31 марта 2020
String 1= abc/{ID}/plan/{ID}/planID
String 2=abc/1234/plan/456/planID

Как я могу сопоставить эти две строки, используя Java regex, чтобы он возвращал true? В основном {ID} может содержать что угодно. Java регулярное выражение должно соответствовать abc/{anything here}/plan/{anything here}/planID

Ответы [ 4 ]

1 голос
/ 31 марта 2020

Если {ID} может содержать что-либо, я предполагаю, что оно также может быть пустым. Поэтому это регулярное выражение должно работать:

str.matches("^abc.*plan.*planID$");
  • ^ ab c в начале
  • . * Ноль или более любого символа
  • planID $ на конец
1 голос
/ 31 марта 2020

Если ваше "{что-нибудь здесь}" включает ничего , вы можете использовать .*. . соответствует любой букве, а * означает, что строка соответствует любой длине с предыдущей буквой, включая длину 0. Таким образом, .* означает, что «соответствует строке любой длины, составленной из любой буквы». Если {что-нибудь здесь} должно содержать хотя бы одну букву, вы можете использовать + вместо *, что означает почти то же самое, но должно совпадать хотя бы с одной буквой.

Мое предложение: abc/.+/plan/.+/planID

0 голосов
/ 31 марта 2020

Если строка всегда начинается с 'ab c' и заканчивается 'planid', тогда будет работать следующий способ:

String s1 = "abc/{ID}/plan/{ID}/planID";
String s2 = "abc/1234/plan/456/planID";

String pattern = "(?i)abc(?:/\\S+)+planID$";

boolean b1 = s1.matches(pattern);
boolean b2 = s2.matches(pattern);
0 голосов
/ 31 марта 2020

Я просто пишу небольшой код, просто проверьте его и начните вносить изменения в соответствии с вашими требованиями. Это работает, проверьте другие тестовые случаи, если есть какие-либо проблемы, пожалуйста, прокомментируйте этот тестовый пример. В частности, я использую регулярное выражение, потому что вы хотите сопоставить с помощью java регулярное выражение.

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

class MatchUsingRejex 
{ 
    public static void main(String args[]) 
    { 
        // Create a pattern to be searched 
        Pattern pattern = Pattern.compile("abc/.+/plan/.+/planID"); 

        // checking, Is pattern match or not
        Matcher isMatch = pattern.matcher("abc/1234/plan/456/planID"); 

        if (isMatch.find()) 
            System.out.println("Yes");
        else
            System.out.println("No");
    } 
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...