J'ai une chaîne telle que le ci-dessous;
Nom de la fonction FOO () FOO P> blockQuote>
Je voulais une expression régulière pouvant correspondre à tous les caractères (y compris espace blanc) entre les deux groupes
fonction code> et( code>. p>c'est-à-dire c'est-à-dire, je veux une expression régulière qui ne correspond que "nom" dans la chaîne "Nom de la fonction FOO () foo " p>
J'ai essayé d'utiliser le code de regex comme; p>
xxx pré> mais il semble retourner
nom de la fonction ( code> < / p>J'ai fait une démo ici ici https://regexr.com/4le5h p>
Merci d'avance p> p>
3 Réponses :
Si votre environnement ne prend pas en charge sur le point de vue, car une partie du navigateur ne peut actuellement pas utiliser le groupe de capture et obtenir la valeur souhaitée à partir de celui-ci
p>
let str = "foo function name () foo" let matched = str.match(/(?<=\bfunction\s*)([^(]+)(?=\s*\()/) console.log(matched[1])
Vous pouvez rechercher ce non-espace et son support d'ouverture, suivi d'un espace blanc et d'un support d'ouverture.
p>
var string = 'foo function name () foo',
match = string.match(/function\s+([^\s)]+)(?=\s*\()/)[1];
console.log(match); Vous pouvez utiliser une lunette positive pour correspondre à la fonction correspond à "Nom" dans votre exemple. P> code>. (?<=function +)[^ ]+
(? = Recherchez quelque chose après "fonction" et un ou plusieurs espaces li>
[^] + code> = correspond à tout ce qui n'est pas un espace un ou plusieurs fois li>
ul>
que (regarder derrière) ne fonctionne pas à bord, en fait.
sur latérale Remarque: - i> b> mais ne fonctionnera pas avec une chaîne qui a plus d'espace avant de prénom, c'est-à-dire que le nom Nom de la fonction () code> depuis dans votre classe de caractères vous avez [^] + code>, iMo [^ (] + code> sera un meilleur choix, de toute façon juste un cas de bord
Vous pourriez omettre le groupe de capture autour de la classe de personnages.
@Codemaniac bon appel, je l'ai mis à jour pour tenir compte de cela
Si vous utilisez JS, vous avez le groupe de capture dans le résultat - pourquoi ne pas l'utiliser?
(? <= fonction \ s). +? (? = \ s * \ \ () code> fonctionne dans PCRE mais pas JS.