que je fais un projet en utilisant MapReduce Amazon Web Services et je vais avoir cette erreur:Stackoverflow lorsque la chaîne spliting utilisant l'expression rationnelle
FATAL [main] org.apache.hadoop.mapred.YarnChild: Error running child : java.lang.StackOverflowError at java.util.regex.Pattern$GroupHead.match(Pattern.java:4658)
J'ai lu quelques autres questions pour comprendre pourquoi cela est arrivé et il semble mon regex a des chemins alternatifs répétitifs. Ceci est l'expression rationnelle:
\\s+(?=(?:(?<=[a-zA-Z])\"(?=[A-Za-z])|\"[^\"]*\"|[^\"])*$)
Ce qu'il fait est qu'il divise par l'espace, sauf quand ils sont à l'intérieur de ces symboles < >
ou ces " "
. Donc, fondamentalement, prend des chaînes qui sont à l'intérieur de ces 2 types de symboles. J'ai essayé beaucoup d'autres versions mais aucune ne fonctionne, donc je suis loin d'une version optimale. Je suis un peu perdu et c'est la première fois que j'utilise ces regex complexes. Quelqu'un peut-il s'il vous plaît donner une meilleure option pour mon regex?
J'apprécierais vraiment tous les commentaires à ce sujet!
EDIT:
Cette chaîne avec des URL à l'intérieur <> et texte à l'intérieur "" et des espaces:
< \ janhaeussler.com/ sioc_type = user & sioc_id = 1 /> "HEY" < .org/1999/02/22-rdf-syntax-ns # Type />
devrait produire ces 3 chaînes:
1. < \ janhaeussler.com/ sioc_type = user & sioc_id = 1 /> (avec ou sans <>)
2. "HEY"
3. < .org/1999/02/22 rdf-syntax-ns # Type />
EDIT 2:
Je pense que les symboles <> sont source de confusion. J'essaie de trouver une regex qui se divise par un ou plusieurs espaces sans tenir compte des espaces à l'intérieur de "", puisque les URL n'ont pas d'espaces.
vous devez fournir une entrée en forme et respectivement la sortie attendue. De cette façon, il serait mieux compréhensible et une solution alternative pourrait être fournie –