6
votes

REGEXP correspondant au cochon

Utiliser Apache Cochon et le texte

extrctd = FOREACH fltr GENERATE FLATTEN(EXTRACT(txt,'(my brother just .*\\p{Punct})')) as (txt:chararray);


0 commentaires

3 Réponses :


0
votes

Avez-vous essayé: . * (mon frère juste. * \\ p {punct})

On dirait que votre expression voulait que le mon frère soit le début de la chaîne, mais dans votre exemple, c'est au milieu de la chaîne afin que vous puissiez rendre compte de tout avant mon frère .


0 commentaires

4
votes

Par défaut Les quantifiers sont gourmand . Cela signifie qu'ils correspondent autant que possible. Dans ce cas, vous voulez correspondre uniquement à la première marque de ponctuation. En d'autres termes, vous voulez correspondre le moins possible.

Pour résoudre votre problème, vous devez rendre le quanitifer non gourmand en ajoutant un ? Code> immédiatement après: P>

my brother just .*?\\p{Punct}
                  ^


4 commentaires

Souhaitez-vous expliquer la partie gourmande? Je pensais que je serais juste correspondant à partir du mot juste, tout texte suivant, jusqu'à la première instance de ponctuation.


Sans non-gourmand, il ne correspond pas à la première instance de ponctuation, il correspond plutôt à ce que dernier un.


Qu'en est-il s'il n'y a pas de ponctuation? J'aimerais que cela correspond à la fin de la phrase ou de l'EOL s'il n'y a pas de ponctuation.


Une réponse plus intuitive pourrait être de faire correspondre tout ce qui n'est pas une ponctuation après «mon frère», puis correspond à une ponctuation. De cette façon, la partie "pas une ponctuation" correspondra à chaque mot / espace et s'arrête à la première ponctuation.



0
votes

Vous correspondez. * Ce qui est ... Tout ... Essayez [AZ] * Pour faire correspondre des lettres uniquement


0 commentaires