我的正则表达式遇到了麻烦。我设法做的与我所寻找的相反,但是我需要帮助来解决这个问题。
它应该执行以下操作:
下面的正则表达式可以做到这一点,但相反!我需要帮助来解决这个问题。我浏览了许多教程和在线指南,但找不到任何答案。
([[\“]。+?[\”])|([-] [a-öA-Ö0-9] +)
谢谢!
对不起,我忘了包含我的期望。
如果我在此文本上测试正则表达式: -item第一个搜索字符串-item2 -item3“重要”
我希望正则表达式仅匹配以下单词!
第一 搜索 字符串
答案 0 :(得分:1)
对于php:
<?php
$actual = '-item first search string -item2 -item3 "important"';
$expect = preg_replace(
'/(\"[a-zA-Z0-9]+\")|(\B-[a-zA-Z0-9]+)/',
'',
$actual
);
echo $expect;
const actual = '-item first search string -item2 -item3 "important"';
const expect = actual
.replace(/\B-[a-zA-Z0-9]+/g, '')
.replace(/"[a-zA-Z0-9]+\"/, '');
const expect2 = actual.replace(/(\"[a-zA-Z0-9]+\")|(\B-[a-zA-Z0-9]+)/g, '');
console.log(expect);
console.log(expect2);
答案 1 :(得分:1)
这可以完成工作:
$str = ' -item first search string -item2 -item3 "important"';
preg_match_all('/(?<!["-])\b\w+\b(?!")/', $str, $m);
print_r($m);
输出:
Array
(
[0] => Array
(
[0] => first
[1] => search
[2] => string
)
)
说明:
(?<!["-]) # negative lookbehind, make sure we haven't quote or dash before
\b\w+\b # 1 or more word characters, surrounded with word boundary
(?!") # negative lookahead, make sure we haven't quote after