J'ai des chaînes qui ressemblent à ceci: ou un autre exemple est p> etc p> i Voudrais savoir s'il existe un moyen d'utiliser une regreg pour une recherche et de remplacer une action qui trouvera la dernière occurrence du caractère de soulignement de la chaîne (comme les exemples montrent que ce n'est pas un numéro fixe), puis allez à la fin. du mot et appendez une autre chaîne à elle. p> par exemple Il pourrait y avoir plusieurs occurrences de Celles-ci soient appelées mots-clés dans une page complète de texte. P> , espérons que quelqu'un a une bonne idée, je ne suis pas le meilleur avec regex et la recherche régulière et remplacer le code avec indexof, substrings, etc. jusqu'à présent n'a pas été échouer en toute sécurité dans de grandes quantités de texte. p> merci! p> p> sub_tes_prod_feature code> devient sub_test_prod_feuture_typed code>. p>
3 Réponses :
Utilisation de JS, essayez
var result = 'a_b_c d_e f_g_ hij k_l_m,n_o_p_q _xyz'
.replace(/(\b[a-z]+(_[a-z]+)+\b)/gi, '$1_typed');
console.log(result); // "a_b_c_typed d_e_typed f_g_ hij k_l_m_typed,n_o_p_q_typed _xyz"
var result2 = 'a_b_c d_e f_g_ hij k_l_m,n_o_p_q _xyz'
.replace(/(\b[a-z]*(_[a-z]+)+\b)/gi, '$1_typed');
console.log(result2); // "a_b_c_typed d_e_typed f_g_ hij k_l_m_typed,n_o_p_q_typed _xyz_typed"
Qu'en est-il du mot suivant: _xyz code>?
Exclu des résultats exprès. Mais s'il doit être remplacé aussi bien, alors c'est encore plus simple :)
Essayez ceci:
"sub_test_prod_feature xxxx sub_test_prod_feature".replace(/_(\w+)/gi, "$1_typed") "subtest_prod_feature_typed xxxx subtest_prod_feature_typed"
\ w code> inclut le caractère _ code> dans le cas de sub_tes_prod_feature code> 1 $ est test_prod_feature code>, donc ça marche quand même. Cependant, il n'est pas clair de la déclaration de problème si _ code> ne peut pas être le caractère final du mot (rien dans l'instruction ne dit qu'il ne peut pas). Votre code ne correspondra pas au abc _ code>.
Bien repéré. Le remplacement de la + avec un * résoudra cette limitation.
De plus, \ w code> correspond à des éléments en plus des caractères alpha, tels que des chiffres. [A-Z] code> pourrait être un meilleur candidat.
Je suppose que tout se résume à l'état actuel de cette demande "Cette question a besoin de détails ou de clarté."
Exactement juste !!
console.log('_def abc_def abc_def_xyz abc_'.replace(/((?:\b[a-z_]*)_[a-z]+\b)/gi, '$1_typed'))
HM ne peut-il pas simplement ajouter votre texte à la chaîne avec un opérateur de concaténation simple? Je ne vois pas pourquoi vous devez utiliser REGEXP? Comme,
list_test_prod_01 code> doit êtrelist_test_prod_01_typed code> oulist_test_prod_typed code>?Je vous suggère d'ajouter un échantillon où le soulignement importe réellement: dans le seul échantillon de sortie d'entrée -> que vous avez fourni, il semble que votre problème puisse simplement être résolu en concaténant une chaîne à la fin de l'entrée.
Je m'attendrais à voir des regexp dans une question marquée avec [regex], mais non ..?
Le problème revient vraiment à trouver n'importe quel mot sur une limite de mot constitué de
[a-za-z _] code> avec au moins un_ code> (que cela ne puisse pas être le caractère final est non explicit à partir de la déclaration de problème), puis ajouté_tdédé code>.