Supported Versions: PHP 4, PHP 5, PHP 7, PHP 8
Quote regular expression characters
<?php preg_quote(string $str, ?string $delimiter = null): string
<?php             if (file_exists($dir)) {


                $dirMatch = preg_quote(strtr(realpath($dir), '\\', '/'));

                foreach ($excluded as $index => $pattern) {


                    $pattern = Preg::replace('{^(([^.+*?\[^\]$(){}=!<>|:\\\\#-]+|\\\\[.+*?\[^\]$(){}=!<>|:#-])*).*}', '$1', $pattern);
<?php                     if (($type === 'files' || $type === 'classmap' || $type === 'exclude-from-classmap') && $package->getTargetDir() && !Filesystem::isReadable($installPath.'/'.$path)) {


                        if ($package === $rootPackage) {

                            $targetDir = str_replace('\\<dirsep\\>', '[\\\\/]', preg_quote(str_replace(array('/', '\\'), '<dirsep>', $package->getTargetDir())));

                            $path = ltrim(Preg::replace('{^'.$targetDir.'}', '', ltrim($path, '\\/')), '\\/');

                        } else {
<?php                     if ($type === 'exclude-from-classmap') {


                        $path = Preg::replace('{/+}', '/', preg_quote(trim(strtr($path, '\\', '/'), '/')));




                        $path = strtr($path, array('\\*\\*' => '.+?', '\\*' => '[^/]+?'));
<?php                         }



                        $resolvedPath = realpath($installPath . '/' . $updir);

                        $autoloads[] = preg_quote(strtr($resolvedPath, '\\', '/')) . '/' . $path . '($|/)';

                        continue;

                    }
<?php         if (empty($validClasses)) {

            foreach ($rejectedClasses as $class) {

                if ($io) {

                    $io->writeError("<warning>Class $class located in ".Preg::replace('{^'.preg_quote(getcwd()).'}', '.', $filePath, 1)." does not comply with $namespaceType autoloading standard. Skipping.</warning>");

                }

            }
<?php     {

        $firstDelimiterChar = $delimiter[0];

        $delimiterLength = \strlen($delimiter);

        $delimiterPattern = '{'.preg_quote($delimiter).'(?![a-zA-Z0-9_\x80-\xff])}A';



        while ($this->index < $this->len) {
<?php             return false;

        }



        $pattern = sprintf('{^/?%s(/\*?)?$}', preg_quote($vendor));



        $lines = file($ignoreFile, FILE_IGNORE_NEW_LINES);

        foreach ($lines as $line) {
<?php         $query = implode(' ', $input->getArgument('tokens'));

        if ($mode !== RepositoryInterface::SEARCH_FULLTEXT) {

            $query = preg_quote($query);

        }



        $results = $repos->search($query, $mode, $type);
<?php         $packages = array();

        $packageFilterRegex = null;

        if (null !== $packageFilter) {

            $packageFilterRegex = '{^'.str_replace('\\*', '.*?', preg_quote($packageFilter)).'$}i';

        }



        $packageListFilter = array();
<?php     protected function resolvePackageInstallPreference(PackageInterface $package)

    {

        foreach ($this->packagePreferences as $pattern => $preference) {

            $pattern = '{^'.str_replace('\\*', '.*', preg_quote($pattern)).'$}i';

            if (Preg::isMatch($pattern, $package->getName())) {

                if ('dist' === $preference || (!$package->isDev() && 'auto' === $preference)) {

                    return 'dist';
<?php             foreach ($candidateBranches as $candidate) {

                if (Preg::isMatchAll('{^[a-f0-9]+ refs/remotes/((?:[^/]+)/'.preg_quote($candidate).')$}mi', $refs, $matches)) {

                    foreach ($matches[1] as $match) {

                        $branch = $candidate;

                        $remoteBranches[] = $match;
<?php         $gitRef = $reference;

        if (!Preg::isMatch('{^[a-f0-9]{40}$}', $reference)

            && $branches

            && Preg::isMatch('{^\s+composer/'.preg_quote($reference).'$}m', $branches)

        ) {

            $command = sprintf('git checkout '.$force.'-B %s %s -- && git reset --hard %2$s --', ProcessExecutor::escape($branch), ProcessExecutor::escape('composer/'.$reference));

            if (0 === $this->process->execute($command, $output, $path)) {
<?php         if (Preg::isMatch('{^[a-f0-9]{40}$}', $reference)) {


            if (!Preg::isMatch('{^\s+composer/'.preg_quote($branch).'$}m', $branches) && Preg::isMatch('{^\s+composer/v'.preg_quote($branch).'$}m', $branches)) {

                $branch = 'v' . $branch;

            }
<?php                     $possibleLocalBinaries = $this->composer->getPackage()->getBinaries();

                    if ($possibleLocalBinaries) {

                        foreach ($possibleLocalBinaries as $localExec) {

                            if (Preg::isMatch('{\b'.preg_quote($callable).'$}', $localExec)) {

                                $caller = BinaryInstaller::determineBinaryCaller($localExec);

                                $exec = Preg::replace('{^'.preg_quote($callable).'}', $caller . ' ' . $localExec, $exec);

                                break;
<?php                         foreach ($possibleLocalBinaries as $localExec) {

                            if (Preg::isMatch('{\b'.preg_quote($callable).'$}', $localExec)) {

                                $caller = BinaryInstaller::determineBinaryCaller($localExec);

                                $exec = Preg::replace('{^'.preg_quote($callable).'}', $caller . ' ' . $localExec, $exec);

                                break;

                            }

                        }