2009-08-05 3 views
0

Я работаю с набором данных, который нужно очистить. Я хочу заменить вопросительные знаки (?) Кодом em-dash (—). Вот пример строки:Как совместить и заменить символ без слова между символами слова RegEx?

«... закрыть его после того, пару ...?»

я могу соответствовать этому экземпляру с этим выражением: \ ш \ \ ш Однако, он соответствует один символ по обе стороны вопросительного знака. Таким образом, заменить выглядит следующим образом:

«... закрыть его Дау — после приема пару ...»

Как я могу соответствовать только рисунок, а только заменить знак вопроса?

Спасибо заранее, Джейсон

ответ

3

Если это PHP (я основывая что на другие вопросы вы просили), это следует сделать это:

$str = preg_replace('/(\w)\?(\w)/i', '\\1—\\2', $str); 
+0

Да, в данном конкретном случае я работал в php, и этот матч работает отлично! Благодаря! – JasonBartholme

2

Трудно ответить, если мы не Не знаете, какую технологию вы используете. Если вы пишете JS это будет делать это

inputStr.replace(/(\w)\?(\w)/, '$1—$2'); 
3

Если язык, который вы используете, поддерживает lookarounds, вы можете использовать их, чтобы убедиться, что ваш знак вопроса в окружении символов слова, но на самом деле не захватить их:

/(?<=\w)\?(?=\w)/ 

The (?<=\w) является просмотр назад (двигатель выглядит "за" - до этого - потенциального матча) и (?=\w) является опережением (двигатель смотрит вперед). Обложки не фиксируются, поэтому в вашем случае будет только вопросительный знак, а затем вы можете его заменить.

В PHP, например, вы можете таким образом сделать:

$string = "...shut it down?after taking a couple of..." 
preg_replace('/(?<=\w)\?(?=\w)/', "&mdash;", $string); 
// results in ...shut it down&mdash;after taking a couple of... 

Lookarounds поддерживаются PCRE на основе (Perl совместимые) регулярных выражений двигателей, хотя Рубин не поддерживает просмотра назад.

+0

Это работает так же хорошо, как и образ Шона Брайта. Php поддерживает поисковые запросы, и я попытаюсь реализовать этот метод в других шаблонах, которые мне скоро нужно будет сопоставить. – JasonBartholme

2

Использование: /\ Ь \ \ Ь/

\ б совпадает с границами слов, которые, кажется, что вы после этого?.

Смежные вопросы