我需要帮助对字符串执行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
)
我想用我的正则表达式匹配单词+字母+数字不带引号(简单或双重)而忽略带引号的单词(简单或双重)。
例如在这个字符串中,我应该匹配这个词:env200。
你有什么想法吗?
提前致谢。
答案 0 :(得分:1)
首先,您需要使用此正则表达式删除所有括号和它们之间的单词。
['"][\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]);
}
}
您可以在此处进行测试:http://sandbox.onlinephpfunctions.com/code/60a64961bdce706db0ee735c785e1830a514089f