Я пытаюсь создать правильно регулярное выражение для проверки некоторых значений, я объясню следующее:
Я должен проверить эти строки с помощью:
$_globalVariables/ns:GlobalVariables/VARIABLENAME/ESB/System
$_globalVariables/ns:GlobalVariables/VARIABLENAME2/ESB/System
$_globalVariables/ns:GlobalVariables/VARIABLENAME3/ESB/System
С этой строкой:
$_globalVariables/ns:GlobalVariables/[varname]/ESB/Sistema
Я пробовал некоторые комбинации и читал о регулярном выражении, но я "новичок" в этой теме, и я не могу получить правильный результат.
Я думаю, что это примерно так:
\$_globalVariables/ns:GlobalVariables/(.*?)/ESB/System
\$_globalVariables/ns:GlobalVariables/
→ Текст для проверки в начале(.*?)
→ Все/ESB/System
→ Конец математического текстаИзвините мой английский, если кому-то нужна дополнительная информация, пожалуйста, спросите меня.
Вам нужно избежать символа $
, поскольку он зарезервированный символ означает конец строки/ввода в соответствии с контекстом.
Вот как:
String[] input = {
"$_globalVariables/ns:GlobalVariables/VARIABLENAME/ESB/System",
"$_globalVariables/ns:GlobalVariables/VARIABLENAME2/ESB/System",
"$_globalVariables/ns:GlobalVariables/VARIABLENAME3/ESB/System" };
Pattern p = Pattern.compile("^\\$_globalVariables/ns:GlobalVariables/(.+?)/ESB/System");
for (String s: input) {
Matcher m = p.matcher(s);
if (m.find()) {
System.out.println("Found: " + m.group());
System.out.println("\t with variable name: " + m.group(1));
}
}
Вывод
Found: $_globalVariables/ns:GlobalVariables/VARIABLENAME/ESB/System
with variable name: VARIABLENAME
Found: $_globalVariables/ns:GlobalVariables/VARIABLENAME2/ESB/System
with variable name: VARIABLENAME2
Found: $_globalVariables/ns:GlobalVariables/VARIABLENAME3/ESB/System
with variable name: VARIABLENAME3
Заметки
$
- двойное экранирование в Pattern
→ \\$
Pattern
Java здесь