需要对字符串执行特定的regexp

需要对字符串执行特定的regexp,regex,Regex,我需要有关对字符串执行regexp的帮助: 下面是字符串的示例: ( (nissan NEAR leaf) OR env200 OR "e nv200" OR ( (leaf OR evalia) NEAR ( nismo OR eletrico OR "veiculo eletrico" OR carregar OR

我需要有关对字符串执行regexp的帮助:

下面是字符串的示例:

(
    (nissan NEAR leaf) OR 
    env200 OR 
    "e nv200" OR 
    (
        (leaf OR evalia) NEAR (
            nismo OR 
            eletrico OR 
            "veiculo eletrico" OR 
            carregar OR 
            autonomia OR 
            hibrido OR 
            "zero emission" OR 
            recarregavel OR 
            "plug in" OR 
            electrified
        )
    )
) NOT (
    flor OR 
    fruto OR 
    "arvore jovem" OR 
    frutos OR 
    flores OR 
    "arvores jovem" OR 
    vegetal OR 
    vegetais OR 
    corrida OR 
    "drag racing" OR 
    "prova de arranques" OR 
    "desporto automovel" OR 
    "desporto motorizado" OR 
    automobilismo OR 
    "a venda" OR 
    "vende se" OR 
    "usado nissan" OR 
    "carro usado" OR 
    negocios OR 
    negocios OR 
    oferta OR 
    ofertas OR 
    policia OR 
    vendas OR 
    concessionario OR 
    concessionarios OR 
    licenca OR 
    patrocinio OR 
    patrocinador OR 
    "contrato de aluguer" OR 
    leasing OR 
    locacao OR 
    arrendar OR 
    "em segunda mao" OR 
    cardeals
)
我想匹配我的regexp-only单词,字母+数字,不带引号(简单或双引号),忽略带引号的单词(简单或双引号)

例如,在这个字符串中,我应该匹配这个单词:env200

你有什么想法吗


提前感谢。

首先,您需要使用此正则表达式删除所有括号和括号之间的单词

['"][\w\s]+['"]
然后使用字符串生成并提取单词

\b([\w]+)\b
您没有指定您的编程语言(您应该这样做,因为每种编程语言的正则表达式引擎都是不同的)

在PHP中,您可以这样做:

$myString = '((nissan NEAR leaf) OR nv200 OR "e nv200" OR ((leaf OR evalia) NEAR (nismo OR eletrico OR "veiculo eletrico" OR carregar OR autonomia OR hibrido OR "zero emission" OR recarregavel OR "plug in" OR electrified))) NOT (flor OR fruto OR "arvore jovem" OR frutos OR flores OR "arvores jovem" OR vegetal OR vegetais OR corrida OR "drag racing" OR "prova de arranques" OR "desporto automovel" OR "desporto motorizado" OR automobilismo OR "a venda" OR "vende se" OR "usado nissan" OR "carro usado" OR negocios OR negocios OR oferta OR ofertas OR policia OR vendas OR concessionario OR concessionarios OR licenca OR patrocinio OR patrocinador OR "contrato de aluguer" OR leasing OR locacao OR arrendar OR "em segunda mao" OR cardeals)';


$myString = preg_replace(
    "/['\"][\w\s]+['\"]/",
    "",
    $myString
);

$words = array();

if (preg_match_all(
    "/\b([\w]+)\b/",
    $myString,
    $words
)) {
    $total = count($words[0]);

    for ($index = 0; $index < $total; $index++) {

        var_dump($words[0][$index]);
    }
}
$myString='((日产NEAR leaf)或nv200或“e nv200”或((leaf或evalia)NEAR(nismo或eletrico或“veiculo eletrico”或“veiculo eletrico”或“carregar”或autonomia或hibrido或“零排放”或“recarregavel”或“plug-in”或带电))(弗洛r或fruto或“arvore jovem”或“frutos或“arvores jovem”或“arvores jovem”或植物或corrida或“拉力赛”或“prova de arranques”或“desporto automovel”或“desporto motorizado”或“automobilismo”或“a venda”或“vende se”或“usado nissan”或“carro usado”或“negocios”或“oferta”或“oferta”或“policia”或“vendas”或“特许经营”或“特许经营”或“patrocinador”或“contrato de aluguer”“或租赁或locacao或arrendar或“em segunda mao”或cardeals”);
$myString=preg\u replace(
“/['\“][\w\s]+['\“]/”,
"",
$myString
);
$words=array();
如果(预匹配)(
“/\b([\w]+)\b/”,
$myString,
$words
)) {
$total=计数($words[0]);
对于($index=0;$index<$total;$index++){
var_dump($words[0][$index]);
}
}

你可以在这里测试:

你想要括号之间的单词吗?例如,我应该在这个字符串中匹配这个单词:env200。我不认为你可以用一个正则表达式来完成,但我可以为你编写解决方案。非常感谢Johathan。我刚刚添加了一个新的正则表达式来检查一个包含数字+字母:if(preg_match(/(?:[a-zA-Z]+[0-9]|[0-9]+[a-zA-Z])[a-zA-Z0-9]*)/“,$words[0][$index]){$result=true;}