Maison >développement back-end >Problème PHP >Comment exclure une certaine chaîne dans une expression régulière php
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.
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!