Strent d'entrée est quelque chose comme ceci: Ou = Test: this001. Nous avons besoin de "this001" supplémentaire. Meilleur en c #. P>
4 Réponses :
Qu'en est-il de: Voici comment cela fonctionne: p> pour le Le groupe capturé contiendra Mais ce serait plus rapide avec un simple ressources: strong> p> / code> ils " Re délimiteurs de savoir où le début de la regex commence et où il se termine (et pour ajouter des options). p> this001 code>. p> sous-chaîne () code>. Strong> p>
Je n'ai jamais utilisé cette syntaxe, intéressante, quelque chose à regarder aujourd'hui :)
Je ne trouve aucune documentation sur votre construction de regex, pouvez-vous s'il vous plaît fournir une référence?
@Leppie, mis à jour avec plus d'informations, mais votre devrait aller sur régulier-expressions.info Il y a un beaucoup d'informations sur les regexes là-bas.
Le (code> / code> ne semble pas être valide pour .NET. IIRC, c'est une chose javascript, pas?
@leppie, sa syntaxe de Perl, mais elle est également utilisée avec d'autres saveurs de regex. Vous avez raison, pas besoin de délimiteurs, mais je les utilise toujours pour avoir une regex "standard", que tout le monde peut comprendre.
Merci, je pensais que j'étais un peu confus :)
Un problème avec ceci est-ce sur le point de conduire. E.g dans le cas de CN = Test: this001. Nous extraions d'un certificat numérique. Seule la chaîne après "ou =" doit être appariée.
Il suffit d'ajouter ou =. *? Code> au début de votre regex.
+1 pour marcher à ceux d'entre nous par l'OMS qui doivent être retenties à chaque fois que nous utilisons une regex.
+1 Pour expliquer ce que signifie n'importe quel caractère là-bas, les gens coutumes pour donner la recette mais oublient d'expliquer. Merci!
"OU =" sent que vous faites une recherche Active Directory ou LDAP et répondez aux résultats. Alors que Regex est un outil brillant, je voulais juste m'assurer que vous êtes également conscient des excellentes classes System.Directoryservices.protocols effectuées pour analyse, filtrage et manipulation de ce type de données. P>
La rechercheResult, la rechercheResultytry et DirectoryAttribute en particulier seraient les amis que vous recherchez. Je ne doute pas que vous pouvez dégoût ou sous-chaîner aussi intelligemment que le prochain gars, mais il est également agréable d'avoir un autre bon outil dans la boîte à outils. P>
Avez-vous essayé ces classes? P>
Ceci est d'un certificat. "OU =" fait partie du nom du sujet de System.Security.Cryptography.x509Certificats.
si le que RegEx correspond à toute longueur de texte après Le côlon, alors que tout texte avant que le côlon n'est juste une exigence. p> Vous pouvez remplacer P> ou = test: code> est votre exigence avant la chaîne que vous souhaitez faire correspondre, utilisez cette regex: test code> avec [A-za-z] + code> pour correspondre Tout texte autre que test ou vous pouvez remplacer test code> avec [\ w] + code> pour correspondre à n'importe quelle longueur de toute combinaison d'alphabet et de numéros. P> \ s * code> signifie qu'il pourrait s'agir d'un nombre quelconque d'espaces blanchisseurs ou de rien dans cette position, supprimez-le si vous n'avez pas besoin d'un tel chèque. p> p>
une solution sans regex: regex vs scindinal vs index de stry> p> divisée p> var str = "OU=TEST:This00:1";
var sw = new Stopwatch();
sw.Start();
var result = str.Substring(str.IndexOf(":") + 1);
sw.Stop();
// sw.ElapsedTicks == 40
Bonne idée, mais seulement "ou =" et ":" ont une valeur fixe / longueur. Tout le reste est variable.
@ICERMAN: la longueur n'a pas d'importance, s'il a au moins un : code> il obtiendra tout après elle.
str.split (nouveau caractère [] {':'}, 2) code> Le deuxième paramètre indique le nombre de pièces qu'il sera divisée. Dire de se diviser en 2 va causer ou = jjj: kkkkkk: aaaaa: ssssss: xxxx code> retournera 2 groupes: ou = jjj code> kkkkkk: AAAAA: SSSSSS: xxxx code>