В ниже приведенном тексте нужно найти слово, после решетки, если между двумя решетками существует элемент ("^\s.+ = ").
Код:
#First
0 = "0000"
1 = "0000"
...
99 = "0000"
#Second
100 = "0000"
101 = "0000"
...
199 = "0000"
#Third
200 = "0000"
201 = "0000"
...
300 = "0000"
Решение пока у меня получилось такое, но оно не совсем корректное: (?<=[#])\w+(?=([^#]+)(173 = ))
Если я использую первую сотню, то выделяются сразу все 3 элемента. Но если воспользоваться (?<=[#])\w+(?=([^#]+)(^\s173 = ))
все работает, но возникает следующая проблема описанная ниже.
P.S. я написал не зря ("^\s.+ = ")
, т.к. вместо цифр могут быть буквы. Прикрепляю файл.
Чтобы не плодить куча тем, сразу задам тут связующий вопрос:
Если попытаться выполнить код, то System.out.println(a);
не сработает, но сработает криво как указано выше если вместо (?<=[#])\\w+(?=([^#]+)(^\\s"+i+" = ))
вписать (?<=[#])\\w+(?=([^#]+)("+i+" = ))
public static void main (String[] args){
try (Scanner s = new Scanner(new BufferedReader(new FileReader ("src\\main\\resources\\DefaultValues")))){
String i = "0";
while(s.hasNext()){
String a = s.findInLine("(?<=[#])\\w+(?=([^#]+)(^\\s"+i+" = ))");
if(a!=null){
System.out.println(a);
}
s.nextLine();
}
}
catch(IOException ex){
ex.printStackTrace();
}
}
В чем может быть проблема?