正则表达式-扭转

时间:2018-12-22 10:54:56

标签: php regex

我的正则表达式遇到了麻烦。我设法做的与我所寻找的相反,但是我需要帮助来解决这个问题。

它应该执行以下操作:

  1. 删除所有“兔子耳朵”之间的所有单词
  2. 删除所有以-开头的单词(不在单词之间)

下面的正则表达式可以做到这一点,但相反!我需要帮助来解决这个问题。我浏览了许多教程和在线指南,但找不到任何答案。

([[\“]。+?[\”])|([-] [a-öA-Ö0-9] +)

谢谢!

对不起,我忘了包含我的期望。

如果我在此文本上测试正则表达式: -item第一个搜索字符串-item2 -item3“重要”

我希望正则表达式仅匹配以下单词!

第一 搜索 字符串

2 个答案:

答案 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