Comment utiliser des expressions régulières pour faire correspondre tout avant un certain type de mot
Je suis nouveau sur des expressions régulières.
Est-il possible de mettre le tout devant un mot qui répond à certains critères:
E. g.
CECI EST UN TEST - - +++ C'est un test
J'aimerais qu'il rencontre un mot qui commence par une majuscule et le caractère suivant est inférieur cas. Cela constitue un bon mot. Je voudrais ensuite à supprimer tout ce qui est avant le mot.
L'exemple ci-dessus doivent produire: C'est un test
Je veux seulement ce traitement jusqu'à ce qu'il trouve le bon mot, puis s'arrêter.
Toute aide serait appréciée.
Grâce
source d'informationauteur John Daly
Vous devez vous connecter pour publier un commentaire.
Remplacer
avec la chaîne vide. Cela fonctionne pour l'entrée ASCII. Pour les non-entrée ASCII (Unicode, d'autres langues), des stratégies différentes s'appliquent.
Explication
La Java Unicode variante serait celui-ci:
Avoir réveillé un peu, vous n'avez pas besoin de supprimer quoi que ce soit, ou même de créer un sous-groupe - il suffit de trouver le modèle exprimé ailleurs dans les réponses. Voici un exemple complet:
EDIT: réponse Originale à cette question
Ce dirait qu'il fait la bonne chose:
Fondamentalement, l'astuce est de ne pas ignorer tout ce qui est avant le mot - c'est pour tout groupe à partir de la bonne parole à partir de, et de remplacer l'ensemble du texte avec ce groupe.
Ci-dessus échoue avec
"*** FOO *** I am fond of peanuts"
parce que le "je" ne serait pas considéré comme un bon mot. Si vous souhaitez corriger, modifier le [a-z] [a-z\s] qui permettra d'espaces au lieu d'une lettre.Je sais que mon opinion sur ce n'est pas vraiment populaire, donc les gars, vous pouvez-me voter dans l'oubli si vous voulez, mais je délire un peu (et elle contient une solution, il suffit de pas dans la façon dont l'affiche a demandé).
Vraiment, je ne comprends pas pourquoi les gens vont à des expressions régulières si rapidement.
J'ai fait beaucoup de traitement de chaîne (Utilisé pour gratter vt100 écrans de menu) et je n'ai jamais trouvé un seul cas où les Expressions Régulières aurait été beaucoup plus facile que d'écrire du code. (Peut-être un couple aurait été un peu plus facile, mais pas beaucoup).
Je sorte de comprendre qu'ils sont censés être plus facile une fois que vous savez, mais vous voyez quelqu'un de poser une question de ce genre et se rendent compte qu'ils ne sont pas faciles pour tout programmeur pour obtenir juste en jetant un coup d'oeil à elle. Si cela coûte 1 programmeur quelque part en bas de la ligne de 10 minutes de la pensée, il a une énorme perte nette sur juste de codage, même si vous avez pris 5 minutes pour écrire 5 lignes.
Donc, il va avoir besoin de documentation--et si quelqu'un qui est au même niveau vient à travers elle, il ne sera pas en mesure de le modifier sans connaissance en dehors de son domaine, même avec de la documentation.
Je veux dire, si l'affiche avait de demander sur un cas trivial, alors il n'y a pas une telle chose comme un cas trivial.
Je veux dire, c'est 5 lignes, mais c'est simple, plus lisible et plus rapide que la plupart (tous?) RE analyseurs. Une fois que vous avez enveloppé une expression régulière dans une méthode et commenté, la différence de taille n'est pas mesurable. La différence dans le temps--et bien, pour l'affiche, il aurait évidemment été BEAUCOUP moins de temps (comme cela pourrait être le prochain mec qui vient dans son code.
Et cette chaîne est l'une de celles qui le sont encore plus facile en C avec des pointeurs--et il serait encore plus rapide puisque les fonctions de test sont des macros dans C.
Par la voie, assurez-vous que vous regardez pour une place dans le deuxième slot, pas juste un minuscule variable, sinon vous allez manquer des lignes commençant par les mots d'Une ou I.
correspondent à:
C'est un texte
ensuite, vous pouvez faire quelque chose comme ceci
Qui est ce que vous cherchez, je pense que