Maison > développement back-end > Problème PHP > Comment exclure une certaine chaîne dans une expression régulière php

Comment exclure une certaine chaîne dans une expression régulière php

藏色散人
Libérer: 2023-03-07 18:12:01
original
3461 Les gens l'ont consulté

Comment utiliser une expression régulière php pour ne pas contenir une certaine chaîne : créez d'abord un exemple de fichier PHP ; puis utilisez l'expression régulière "preg_match("/[^(abc)]/s", $str, $ arr); "Implémentez simplement le jugement selon lequel il ne contient pas une certaine chaîne.

Comment exclure une certaine chaîne dans une expression régulière php

Recommandé : "Tutoriel vidéo PHP"

Fonction commune strstr($str, "abc" );
Correspondance régulière preg_match(”/(abc)?/is”, $str);
Mais si vous souhaitez faire correspondre une chaîne qui ne contient pas une certaine chaîne, il est plus difficile d'utiliser une correspondance régulière
Si Le problème peut être résolu sans utiliser l’expression régulière !strstr($str, “abc”);
Mais avec l’expression régulière, il n’y a que ceci, “/^((?!abc).) *$/is”

//------------------------------------------------ 
代码如下:
 <?php 
  $str = "dfadfadf765577abc55fd"; 
  $pattern_url = "/^((?!abc).)*$/is"; 
  if (preg_match($pattern_url, $str)){ 
  echo "不含有abc!"; 
  }else{ 
  echo "含有abc!"; 
  } 
  ?> 
 
 //------------------------------------------------ 
 结果为:false,含有abc! 
 $str = “2b3c4d5c”; 
 注意:[^(abc)] 这个语法是逐个检查$str中的字符是否不在 a b c中, 
 preg_match(”/[^(abc)]/s”, $str, $arr); 
 其中字符 2 就不在 a b c 中,所以$arr返回值为2; 
 同时匹配,包含字符串 “abc”,而且不包含字符串 “xyz” 
 “/(abc)[^((?!xyz).)*$]/s”
Copier après la connexion

Ce qui suit est un supplément :

Il existe de nombreuses façons de déterminer si une chaîne contient une autre chaîne, comme suit :

1. Fonction commune

strstr($str, "abc");
Copier après la connexion

2. Correspondance régulière

preg_match("/(abc)/is", $str);
Copier après la connexion

Mais si vous souhaitez faire correspondre une chaîne qui ne contient pas une certaine chaîne, il est plus difficile d'utiliser Regular. expressions.
1. Si vous n'utilisez pas d'expressions régulières, vous pouvez résoudre le problème comme suit :

!strstr($str, "abc");
Copier après la connexion

Le résultat est : false, contenant abc !

Expression régulière qui correspond à la fois à la chaîne "abc" et non à la chaîne "xyz" :

preg_match("/(abc)[^((?!xyz) .)*$] /is", $str);

Cette méthode est efficace. Je l'utilise comme suit :

preg_match("/^((?!abc).)*$/is", $str);
Copier après la connexion

Mais au final, j'ai trouvé que cette méthode est extrêmement inefficace. Vous pouvez envisager d'utiliser lors du traitement d'un texte très court (il y a une douzaine de mots, ou tout au plus des dizaines de mots, qui doivent correspondre à la même partie de l'expression régulière), mais vous ne devez pas l'utiliser lors de l'analyse d'un article volumineux ou lorsque vous devez le modifier l'heure de correspondance à plusieurs endroits, envisagez d'utiliser d'autres méthodes à la place (telles que : analysez d'abord le texte pour correspondre à l'expression régulière, puis vérifiez si un certain texte existe), les expressions régulières ne sont pas très efficaces pour faire correspondre les champs de texte. qui ne contiennent pas de chaînes spécifiques.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
php
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers numéros
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal