2011-03-21 5 views
0

J'ai un texte que je veux diviser chaque fois que je rencontre « MOT » au début d'une ligne et sans caractères suivants. J'ai utilisé text.split ("WORD"), seulement son n'est pas bon parce que par exemple% hi hi WORD ne devrait pas être égalé par la méthode split, et maintenant il est apparié. J'ai essayé d'utiliser "^ WORD" mais cela ne correspond qu'à WORD au début du texte entier.découpant une chaîne au début d'une ligne

des idées comment fais-je cela? btw i utiliser java si cela importe

+1

Pouvez-vous saisir du texte note d'exemple? –

+0

Vous voulez dire, vous voulez diviser _par WORD_ si vous voyez mot sur une ligne par lui-même (à savoir pas de caractères avant parce qu'il est au début et pas de caractères après sur la ligne non plus)? Ou diviser par WORD sauf où il se produit sur sa propre ligne à la toute fin du fichier (littéralement aucun caractère suivant)? Ou vous voulez diviser par quelque chose d'autre? Je suis confus. –

+0

c'est comme vous l'avez dit, quand il est sur une ligne par lui-même – yot

Répondre

5

Utilisez le multiline modifier (qui a le même effet que le drapeau Pattern.MULTILINE pour un motif regex):

text.split("(?m)^WORD"); 

Il modifie le sens de ^ de « au début de la chaîne »-« au début d'une ligne ».

+0

Oh, beaucoup mieux! –

+0

salut. ça ne marche pas pour moi. i correspond encore sdfsdWORD par exemple – yot

+0

@yot: Travaux pour moi ... http://www.ideone.com/VUCxH – Tomalak

0

Comme Tomalak affiché, utilisez le modificateur multiligne. Si vous voulez garder le mot lui-même, vous pouvez également faire:

Pattern p = Pattern.compile("(^WORD .*$)", Pattern.MULTILINE); 
String input = "WORD something. And WORD not at beginning.\nWORD something."; 
Matcher m = p.matcher(input); 
while (m.find()) { 
    System.out.println(m.group()); 
} 
0

Rencontrant « MOT » au début d'une ligne et sans caractères suivants.

text.split("(?mis)^WORD(?!.)");

+0

Pourquoi 'i' et' s'? Vous ne pouvez pas dire si cela serait correct. – Tomalak

+0

@Tomalak ne précise pas si WORD sera toujours en majuscule. Je voulais que le point corresponde à tous les caractères. – Stephan

+0

Avec le modificateur 's',' (?!.) 'Signifie qu'aucun caractère ne suit ce point, pas même un saut de ligne. En d'autres termes, il correspond exactement à la fin de la chaîne, exactement comme '\ z'. –