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

藏色散人
藏色散人original
2020-11-20 09:42:133410parcourir

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”

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

2. 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 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");

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

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!

Déclaration:
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