繁体   English   中英

两个或两个以上单词的正则表达式php

[英]Regular expressions for two or more words php

我有以下职位:

Reactive Customer Coach
Customer Reactive Coach
Technical Reactive Customer Coach
Field Engineer
Customer Engineer for FTTC

我想搭配:

Reactive Coach (与Reactive关键字或Coach关键字在字符串中的位置无关)也希望与Engineer关键字匹配(同样可以在字符串中的任何位置出现)

如果找不到这些关键字,则应返回FALSE

对于上述情况,什么是合适的正则表达式? (我是正则表达式的新手,所以我自己还没有尝试过任何东西)

您可以在PHP中尝试使用此正则表达式:

(?|(\bReactive\b).*?(\bCoach\b(?! *OM\b))|(\bCoach\b).*?(\bReactive\b)|(\bEngineer\b))

正则演示

(?!...)是一个非捕获组 在此构造的每个替代方案中声明的子模式将从相同的索引开始。

对于简单的匹配,不需要regexp

<?php
/**
*/
error_reporting(E_ALL);
ini_set('display_errors',1);
$in = [
 'Reactive Customer Coach'
,'Customer Reactive Coach'
,'Technical Reactive Customer Coach'
,'Field Engineer'
,'Customer Engineer for FTTC'
,'No such as'
];

function x($s) {
    if ( false !== mb_strpos($s,'Reactive') ) {
        return false !== mb_strpos($s,'Coach');
    }
    return false !== mb_strpos($s,'Engineer');
}

foreach ($in as $i) {
    echo $i,' ',x($i)?'Match':'',"\n";
}

您可以使用strpos ,不区分大小写(Reactive | reactive | REACTIVEstripos

if(stripos($mystring, 'reactive') != FALSE && stripos($mystring, 'coach') != FALSE){
    //string contains reactive or Coach
} else if(stripos($mystring, 'engineer') != FALSE){
    //string contains Engineer
} else{
    return FALSE;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM