336 votes

Expressions régulières - Tout correspond

Comment faire pour qu'une expression corresponde à absolument tout (y compris les espaces) ?
Exemple :

Regex : J'ai acheté _____ moutons.

Matches : J'ai acheté des moutons. J'ai acheté un mouton. J'ai acheté cinq moutons.

J'ai essayé d'utiliser (.*) mais ça n'a pas l'air de fonctionner.

35 votes

.* devrait fonctionner. Pouvez-vous coller votre code actuel ?

3 votes

Dans quelle langue codez-vous ?

10 votes

Un point ne correspond pas à un saut de ligne

2voto

Lonnie Best Points 608

La spécification de 2018 fournit les drapeau de l'UE (alias : dotAll), de sorte que . correspondra à n'importe quel caractère, y compris les sauts de ligne :

const regExAll = /.*/s; //notice the 's'

let str = `
Everything
    in  this
            string
                    will
                        be
    matched. Including whitespace (even Linebreaks).
`;

console.log(`Match:`, regExAll.test(str)); //true
console.log(`Index Location:`, str.search(regExAll));

let newStr = str.replace(regExAll,"

2voto

SridharKritha Points 346
  1. Regex :

    /I bought.*sheep./

    Matches - le ensemble du site chaîne jusqu'à la fin de la ligne

    I bought sheep. I bought a sheep. I bought five sheep.

  2. Regex :

    /I bought(.*)sheep./

    Matches - le ensemble du site et capture également la sous-chaîne dans () pour une utilisation ultérieure

    I bought sheep. I bought a sheep. I bought five sheep.

    J'ai acheté sheep. I bought a sheep. I bought five mouton.

    Exemple d'utilisation Javascript/Regex

    'I bought sheep. I bought a sheep. I bought five sheep.'.match(/I bought(.*)sheep./)[0];

    Sortie :

    "J'ai acheté des moutons. J'ai acheté un mouton. J'ai acheté cinq moutons."

    'I bought sheep. I bought a sheep. I bought five sheep.'.match(/I bought(.*)sheep./)[1];

    Sortie :

    "Un mouton. J'ai acheté un mouton. J'ai acheté cinq "

0voto

Alex Montoya Points 637

Je recommande d'utiliser /(?=.*...)/g

Exemple

const text1 = 'I am using regex';
/(?=.*regex)/g.test(text1) // true

const text2 = 'regex is awesome';
/(?=.*regex)/g.test(text2) // true

const text3 = 'regex is util';
/(?=.*util)(?=.*regex)/g.test(text3) // true

const text4 = 'util is necessary';
/(?=.*util)(?=.*regex)/g.test(text4) // false because need regex in text

Utilisez regex101 pour tester

0voto

Honnêtement, beaucoup de réponses sont anciennes, alors j'ai découvert que si vous testez simplement toute chaîne de caractères, quel que soit son contenu, avec "/.*/i", vous obtiendrez suffisamment TOUT.

0voto

genesis Points 32591
<?php
$str = "I bought _ sheep";
preg_match("/I bought (.*?) sheep", $str, $match);
print_r($match);
?>

http://sandbox.phpcode.eu/g/b2243.php

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X