Учитывая следующую строку: "$ {test.one} $ {test.two}" Я бы хотел, чтобы мое регулярное выражение возвращало два совпадения, а именно "test.one" и "test.two". Для этого у меня есть следующий фрагмент:
import java .util.regex.Matcher; import java .util.regex.Pattern;
public class RegexTester {
private static final Pattern pattern = Pattern.compile("\\$\\{((?:(?:[A-z]+(?:\\.[A-z0-9()\\[\\]\"]+)*)+|(?:\"[\\w/?.&=_\\-]*\")+)+)}+$");
public static void main(String[] args) {
String testString = "${test.one}${test.two}";
Matcher matcher = pattern.matcher(testString);
while (matcher.find()) {
for (int i = 0; i <= matcher.groupCount(); i++) {
System.out.println(matcher.group(i));
}
}
}
}
У меня тоже есть кое-что еще, потому что я хочу, чтобы это также было действительное совпадение $ {test.one} $ {"привет "}.
Итак, я просто хочу, чтобы оно совпадало с чем-либо внутри $ {}, если оно соответствует формату: something.somethingelse
(только там alphanumeri c) или something.somethingElse()
или "something inside of quotations"
(alphanumeri c плюс некоторые другие символы). У меня работает основное регулярное выражение, или я так думаю, но когда я запускаю код, он находит две группы:
$ {test.two} test.two
Я хочу, чтобы вывод быть
test.one test.two