Спасибо за вашу помощьКак написать регулярное выражение Java для этого текстового файла
Я надеюсь получить Id и категорию для каждого элемента в текстовом файле, как следующий:
Id: 0
ASIN: 0771044445
discontinued product
Id: 1
ASIN: 0827229534
title: Patterns of Preaching: A Sermon Sampler
group: Book
salesrank: 396585
similar: 5 0804215715 156101074X 0687023955 0687074231 082721619X
categories: 2
|Books[283155]|Subjects[1000]|Religion & Spirituality[22]|Christianity[12290]|Clergy[12360]|Preaching[12368]
|Books[283155]|Subjects[1000]|Religion & Spirituality[22]|Christianity[12290]|Clergy[12360]|Sermons[12370]
reviews: total: 2 downloaded: 2 avg rating: 5
2000-7-28 cutomer: A2JW67OY8U6HHK rating: 5 votes: 10 helpful: 9
2003-12-14 cutomer: A2VE83MZF98ITY rating: 5 votes: 6 helpful: 5
Id: 2
ASIN: 0738700797
title: Candlemas: Feast of Flames
group: Book
salesrank: 168596
similar: 5 0738700827 1567184960 1567182836 0738700525 0738700940
categories: 2
|Books[283155]|Subjects[1000]|Religion & Spirituality[22]|Earth-Based Religions[12472]|Wicca[12484]
......
Результата должна быть организована как:
1 Book
2 Book
3 Book
Затем я пишу программу Java для извлечения информации:
class Main
{
public static void main(String[] args) throws IOException
{
String file="/Users/swing/Desktop/test.rtf";
BufferedReader br;
try
{
br = new BufferedReader(new FileReader(file));
String line;
String re1=".*?"; // Non-greedy match on filler
String re2=""; // ID 1
String re3="((?:[c-z][a-z]+))"; // Category 1
Pattern p = Pattern.compile(re1+re2+re3,Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
Matcher m = p.matcher(file);
while((line=br.readLine())!=null)
{
m=p.matcher(line);
if (m.find())
{
String id1=m.group(1);
String category1=m.group(2);
System.out.print(" "+id1.toString()+" "+" "+category1.toString()+" "+"\n");
}
}
}
catch (FileNotFoundException e)
{
e.printStackTrace();
System.out.println("fail");}
}
}
Поскольку у меня нет опыта использования java регулярное выражение, поэтому результат неправильный, как следует, не могли бы вы помочь мне исправить неправильные коды? Благодаря !
Неправильный выход:
\r tf
\font tbl
color tbl
ar gl
ardir natural
ardir natural
AS IN
dis continued
AS IN
tit le
gro up
ales rank
simi lar
....
Последний день земли ... Бог простит вам мой сын –
@ user3045306 Что это делает средняя категория для каждого элемента? Не могли бы вы предоставить правильный результат для регулярного выражения, которое вы хотите, в соответствии с вашим примером ввода? – Tafari
@ Тафари извините за неудобства, категория означает группу продуктов, например, для идентификатора продукта 1, категория (группа) - это книга. – user3045306