J'ai un document stocké en tant que grand String. Dans la chaîne j'ai quelques balises XML en ligne et je veux sortir les mots entre les balises. Les documents peuvent également contenir des balises HTML, car les documents sont souvent des sites Web.Java: Problème RegEx (en utilisant le symbole '.' All character)
Exemple de document:
"< tr> Mon nom est < b> < PERSONNE> Bobby </PERSONNE> </b>, je vis aux Etats-Unis."
RegEx actuel:
Pattern p = Pattern.compile("<(LOCATION|PERSON|ORGANIZATION)>[\\w[ '\"/\\!%$\\(\\)\\-\\+]]*</(LOCATION|PERSON|ORGANIZATION)>");
Matcher m = p.matcher("I'm <PERSON>Graham Brown</PERSON> I went to the <LOCATION>USA'S</LOCATION>");
while(m.find()){
System.out.println(m.group());
}
Résultat = < PERSONNE> Bobby </PERSONNE> < LIEU> États-Unis </Location>
Cela fonctionne très bien avec à peu près le plus ponctuation et grammer, mais le Regex devrait permettre à n'importe quel modèle de caractère d'être trouvé entre les étiquettes. Quand j'essaie d'utiliser '.' (n'importe quel caractère), comme ci-dessous il retourne la chaîne entière.
"< tr> Mon nom est < b> < PERSONNE> Bobby </PERSONNE> </b>, je vis aux Etats-Unis."
Pattern p = Pattern.compile("<(LOCATION|PERSON|ORGANIZATION)>.</(LOCATION|PERSON|ORGANIZATION)>");
Comment puis-je retourner tous les caractères entre les balises openinng angulaires et de fermeture?
EDIT: Merci pour vos réponses. Juste et pour aider à obtenir la bonne réponse. Pour clarifier, j'ai marqué Entités nommées en utilisant NER. Si vous n'êtes pas au courant de ce que c'est, veuillez consulter certains des documents que j'ai mentionnés en bas.
Tout ce qui m'intéresse c'est d'obtenir le texte entre les trois balises d'ouverture et de fermeture. Il n'y a pas d'autres balises et les documents ne sont pas des fichiers XML et je ne suis pas en train d'analyser toutes les balises HTML et je ne m'intéresse pas à elles. Tout ce qui m'intéresse est d'analyser les balises XML que j'ai créées, donc je pense que RegEx serait le moyen le plus simple de le faire.
documents à ajouter plus tard ...
dieu Cher, pourquoi n'êtes-vous pas en utilisant une sorte d'analyseur XML? Cette regex est pure * evil *. – abyx
analyse HTML avec regex? c'est une mauvaise idée –
Vous avez sûrement vu ça: http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags – vahidg