Lang: и файл: могут быть размещены в любом месте, и они не являются обязательными.
Попробуйте следующие выражения, чтобы получить список языков и файл:
String input = "Some String lang:c,cpp,java file:build.java";
String langExpression = "lang:([\\w,]*)";
String fileExpression = "file:([\w\.]*)";
Patter langPattern = Pattern.compile(langExpression);
Matcher langMatcher = langPattern.matcher(input);
if (langMatcher.matches()) {
String languageList = langMatcher.group(1);
}
Patter filePattern = Pattern.compile(fileExpression );
Matcher fileMatcher = filePattern.matcher(input);
if (fileMatcher .matches()) {
String filename= fileMatcher.group(1);
}
Это должно работать как с lang:xxx file:xxx
, так и с file:xxx lang:xxx
, если список языков или имя файла не содержат пробелов. Это также будет работать, если отсутствует lang: и / или file:.
Вы также ожидаете такую строку: file:build.java Some String lang:c,cpp,java
?