Regex pour ignorer les personnages principaux
Je suis sûr qu'il ya une solution simple pour cela, mais il m'a bloqué donc j'espère que quelqu'un peut me donner un coup de main. J'ai plusieurs lignes d'entrée qui ressemblent à ceci:
FooABC
Foo XYZ123
FooFgh
J'ai besoin d'une regex (en Java) qui va me donner:
ABC
XYZ123
Fgh
Le meilleur que j'ai trouvé jusqu'à présent est:
[^Foo\s?].*$
Ce que j'ai pensé de travail jusqu'à ce que j'ai remarqué qu'il a été de retirer le capital de F à partir de Fgh. Est il possible que je peux faire exactement ignorer les trois premiers caractères et un ou plusieurs espaces puis il suffit de capturer tout le reste?
MODIFIER /CLARIFICATION
J'aurais dit que je ne peux pas utiliser de sous-chaîne /remplacer ou l'une des choses que je ferais normalement dans cette situation, parce que cette expression sera envoyé dans déployés code qui ne peuvent pas être mis à jour. Ce que fait le code est: est-ce
Pattern pattern = Pattern.compile( regex );
Matcher matcher = pattern.matcher( data );
matcher.find();
String extracted = matcher.group();
et c'est ensuite à l'aide de l'extrait de la chaîne comme une clé pour un coup d'oeil vers le haut. Elle dispose donc d'extraire la clé en un seul passage.
Vous devez vous connecter pour publier un commentaire.
Remplacer
avec une chaîne vide. Utilisation
.{3}
si vous avez besoin de 3 caractères arbitraires au lieu deFoo
.Si vous avez besoin d'utiliser de match au lieu de les remplacer, vous devez utiliser un groupe de capture:
La
[^Foo\s?]
est une classe de caractères ([...]
) correspondent à des caractères sauf (^
) unF
, uno
, un espace (\s
) ou un point d'interrogation?
. C'est pourquoi laF
dansFgh
correspondance. Si vous voulez un groupement support, utilisez(?:...)
.(?<=^Foo\s{0,10}).*$
.devrait faire l'affaire (elle correspond à 3 caractères arbitraires au début de la ligne, un ou plusieurs espaces et puis rien jusqu'à la fin de la ligne).
Ce sujet
ou KennyTM la solution de