на самом деле у меня есть файл в этой строке я должен найти строку "[12] 18383" я использую этот код
while ((read = br.readLine()) != null) {
if (read.trim().matches(" ^[0-9]*$ ")) {
String[] arrOfStr = read.split("[ ]");
int pid = Integer.parseInt(arrOfStr[1].trim());
for (String a : arrOfStr)
{
System.out.println(": terms >>>>>>>>>>>" + a);
}
}
вывод: 18383 поэтому из многих строк я должен искать ту, которая похожа на выше а затем число вне квадратных скобок должно печатать
Прочтите регулярное выражение, затем вы должны заметить, что ` ^[0-9]*$ ` не работает: ^ и $ в большинстве случаев представляют начало и конец ввода, поэтому любые пробелы до и после них не работают. имеет смысл. При этом выражение ^[0-9]*$ будет означать, что «весь ввод (строка) должен содержать цифры или быть пустым» (String.matches() действует аналогично этому, кстати). Вам нужно обновить свое выражение, чтобы отразить структуру ввода, например. необходимо учитывать часть [number].
Используйте Pattern p = Pattern.compile("\\[\\d+]\\s+(\\d+)");, а затем при чтении строк Matcher m = pat.matcher(read.trim()); if (m.matches) { pid = Integer.parseInt(m.group(1)); }
@WiktorStribiżew, сэр, спасибо за вашу помощь, но я использовал этот шаблон, он не работает,




Вы можете использовать регулярное выражение ]\s+([^\s]+) для захвата после квадратных скобок.
Пожалуйста, покажите нам одну совпадающую строку и одну не совпадающую строку.