0
votes

JavaScript RegEx pour sélectionner explicitement de l'article entre deux groupes?

J'ai une chaîne telle que le ci-dessous;

Nom de la fonction FOO () FOO

Je voulais une expression régulière pouvant correspondre à tous les caractères (y compris espace blanc) entre les deux groupes fonction et (.

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 "

J'ai essayé d'utiliser le code de regex comme; xxx

mais il semble retourner nom de la fonction ( < / p>

J'ai fait une démo ici ici https://regexr.com/4le5h

Merci d'avance


1 commentaires

Si vous utilisez JS, vous avez le groupe de capture dans le résultat - pourquoi ne pas l'utiliser? (? <= fonction \ s). +? (? = \ s * \ \ () fonctionne dans PCRE mais pas JS.


3 Réponses :


2
votes

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

​​  Entrez la description de l'image ici P >

p>

let str = "foo function name () foo"
let matched = str.match(/(?<=\bfunction\s*)([^(]+)(?=\s*\()/)

console.log(matched[1])


0 commentaires

2
votes

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);


0 commentaires

1
votes

Vous pouvez utiliser une lunette positive pour correspondre à la fonction 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>

    correspond à "Nom" dans votre exemple. P>

    HTTPS: //regex101.com/r/euqbsk/4 p> p>


4 commentaires

que (regarder derrière) ne fonctionne pas à bord, en fait.


sur latérale Remarque: - 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 () depuis dans votre classe de caractères vous avez [^] + , iMo [^ (] + 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