У меня проблемы с регулярным выражением. Мне удалось сделать противоположное тому, что я искал, но мне нужна помощь, чтобы изменить это.
Он должен был делать следующее:
Регулярное выражение ниже отчасти делает это, но наоборот! Мне нужна помощь, чтобы все исправить. Я просмотрел множество руководств и онлайн-руководств, но не могу найти на это ответа.
([\ "]. +? [\"]) | ([-] [a-öA-Ö0-9] +)
Спасибо!
Извините всех, я забыл включить то, что ожидал.
если я проверю регулярное выражение в этом тексте: -item первая строка поиска -item2 -item3 "important"
Я ожидаю, что Regex будет соответствовать только следующим словам!
первый поиск нить
Да, извините! Например: -item первая строка поиска -item2 -item3 "важный" Результат должен быть: первая строка поиска
Пожалуйста, обновите (stackoverflow.com/posts/53894999/edit) вопрос образцами.






Для 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.info(expect);
console.info(expect2);Привет, спасибо, но на самом деле предполагается обратное, вместо сопоставления -item и -item2 -item3 - должно совпадать: первая строка поиска
Это делает свою работу:
$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
Большое спасибо Тото за объяснение! Причина, по которой мы все здесь, - чтобы учиться, и ваш ответ был прямым, и я хотел бы поблагодарить вас за ваше время, чтобы помочь, а также помочь научить меня немного больше об этом!
@KristofferFrostholm: Пожалуйста, рад помочь. Не стесняйтесь отмечать ответ как принятый, см .: stackoverflow.com/help/someone-answers
Можете ли вы предоставить пример строки и желаемый результат?