/ / J'ai deux problèmes, l'un d'eux est une expression régulière - c #, regex, .net-3.5

J'ai deux problèmes, l'un d'eux est une regex - c #, regex, .net-3.5

Je mets à jour un code que je n'ai pas écrit et une partie de celui-ci est une expression régulière comme suit:

[url(?:s*)]www.(.*?)[/url(?:s*)]

Je comprends que .*? fait une correspondance non gourmande de tout dans le deuxième registre.

Que fait?: S * dans les premier et troisième registres?

Mettre à jour: Comme demandé, le langage est C # sur .NET 3.5

Réponses:

9 pour la réponse № 1

La syntaxe (?:) est un moyen de mettre des parenthèses autour d'une sous-expression sans pour autant extraire séparément cette partie de la chaîne.

L'auteur voulait faire correspondre le (.*?) partie au milieu, et ne voulait pas que les espaces au début ou à la fin ne gênent. Maintenant, vous pouvez utiliser 1 ou $1 (ou quelle que soit la méthode appropriée dans votre langue particulière) pour faire référence au nom de domaine, au lieu du premier bloc d'espaces au début de la chaîne


4 pour la réponse № 2

?: rend les parenthèses non groupées. Dans cette expression régulière, vous ne retirerez qu'une seule information, $ 1, qui contient l'expression du milieu (. *?).


2 pour la réponse № 3

Que fait?: S * dans les premier et troisième registres?

Il correspond à zéro ou plusieurs espaces, sans les capturer.

L'auteur de l'expression régulière a l'intention d'autoriser la fin des espaces blancs dans les balises entre crochets, correspondant à toutes les étiquettes DNS suivant le "www". ainsi:

[url]www.foo.com[/url]     # foo.com
[url  ]www.foo.com[/url  ] # same
[url  ]www.foo.com[/url]   # same
[url]www.foo.com[/url  ]   # same

Notez que l'expression régulière correspond également à:

[url]www.[/url]      # empty string!

et ne correspond pas

[url]stackoverflow.com[/url]  # no match, bummer

1 pour la réponse № 4

Vous pouvez trouver ce cheat feuille d'expressions régulièrestrès utile (j'espère). J'ai passé des siècles à essayer d'apprendre Regex sans chance. Et une fois que j'ai lu cette feuille de triche - j'ai immédiatement compris ce que je n'avais pas appris auparavant.

http://krijnhoetmer.nl/stuff/regex/cheat-sheet/