J'ai cette chaîne Edit: J'utilise cela dans "acc_or.a5j1.01a" code>. Maintenant, je veux tout faire correspondre à tout sauf 01 code>.
Jusqu'à présent, j'ai utilisé le modèle . * \\. Code> qui correspond à tout jusqu'à 01a. Maintenant, je veux aussi correspondre également au dernier caractère "A" code> (qui peut être n'importe quel caractère). Enfin, je veux tout faire correspondre, sauf 01 code> (qui peut également être 2 chiffres).
Ma question est qu'il y a un moyen de tout capturer et d'exclure les 2 chiffres 01 code>? P>
r code>, mon idée était de capturer ces parties afin que je puisse utiliser Sub () fonction et remplacer les pièces assorties avec "" code> . Ce que je veux enfin, c'est d'obtenir les 2 chiffres. P>
3 Réponses :
On dirait que cela pourrait être mieux résolu sans regex. Si tout ce dont vous avez besoin est d'exclure les 2 derniers caractères de la chaîne, vous pouvez le faire via p> string.substr () code> comme ceci: let str = "ACC_OR.A5J1.01A";
console.log( str.substr(0, str.length - 3) + str.substr(-1) );
Pour correspondre à ce qui est avant et après les 2 chiffres, vous pouvez utiliser 2 groupes de capture.
Comme il n'y a pas d'espaces ( Ensuite, vous pouvez utiliser les 2 groupes séparément. P> Regex Démo p> ou vous pouvez utiliser Démo Regex | R Démo P> Par exemple P> . * code> correspondra également aux espaces), vous pouvez utiliser \ S code> pour correspondre à un caractère non blancheur. P>
(\ s + \.) code> Capture Group 1, correspondez à 1 espaces caractères non blancheurs jusqu'à ce que le dernier point li>
\ d {2} code> correspond à 2 chiffres li>
(\ s) code> Capture Group 2, correspond à un char li>
ul>
\ k code> pour correspondre aux chiffres et remplacer par une chaîne EMTPY P> [1] "ACC_OR.A5J1.A"
\ s + \. CODE> Match 1+ sans caractères blancheurs jusqu'à la dernière DOT LI>
\ k code> oublie ce qui a été assorti li>
\ d {2} code> correspond à 2 chiffres li>
(? = \ s) code> affirme ce qui est à droite est un espacement non Whitspace Char Li>
ul> sub("\\S+\\.\\K\\d{2}(?=\\S)", "", "ACC_OR.A5J1.01A", perl=TRUE)
Vous devez simplement avoir besoin d'extraire les deux caractères avant le dernier caractère. Vous pouvez en savoir plus sur le sortie p> substr code>
Merci beaucoup, cela fait exactement ce dont j'ai besoin
Sera-ce 2 matchs distincts,
acc_or.a5j1. Code> eta code>Non, je voudrais le faire correspondre avec une seule expression. Est-il possible d'ignorer 01 et de correspondre simplement à Acc_OR.A5J1. et a? Je suis relativement nouveau pour regex. Pour plus d'informations, je l'utilise à R. Où j'ai une liste des chaînes similaires comme celle précédemment mentionnée et que je souhaite générer une nouvelle liste, ce qui ne contient que les deux chiffres. Utilisation de la fonction SUB () Je souhaite remplacer la chaîne correspondante et remplacez-la sans rien, donc à la fin, je n'ai que 2 chiffres.
Seulement si vous remplacez. Vous ne pouvez pas correspondre aux pièces non adjacentes d'une chaîne dans une opération de match.
Pourquoi avez-vous besoin d'une expression régulière? Cela peut être fait par de simples manipulations de chaîne, il suffit d'extraire tous les caractères sauf les deux que vous souhaitez ignorer
Comme je l'ai dit, je suis nouveau à tout cela, pouvez-vous expliquer comment vous feriez cela, avec quelle fonction? Pour l'instant, je n'ai essayé que d'utiliser Regex, je suis capable de créer ma liste souhaitée, mais en 2 étapes à l'aide de RegEx. S'il y avait un moyen de le faire en une fois, s'il vous plaît remplissez-moi. Merci d'avance.
@Yibioawang Veuillez ajouter la balise
r code> à la question.