Regex, получите строковое значение между двумя символами

Я хотел бы к возвращаемой строке между двумя символами, и точка (.).

Я пытался использовать regex, но не могу найти это работой.

(@(.*?).)

Кто-либо?

18
задан Johannes 9 January 2010 в 19:47
поделиться

3 ответа

Ваше регулярное выражение почти работает, вы просто забыли сбежать период. Также в PHP вам нужны разделители:

'/@(.*?)\./s'

S - модификатор dotall .

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

$s = 'foo@bar.baz';
$matches = array();
$t = preg_match('/@(.*?)\./s', $s, $matches);
print_r($matches[1]);

Вывод:

bar
35
ответ дан 30 November 2019 в 06:25
поделиться

Если вы изучаете REGEX, вы также можете проанализировать их:

@\K[^.]++(?=\.)

(?<=@)[^.]++(?=\.)

оба этих регулярных выражения используют притягивающие квантификаторы ( ++ ). Используйте их всякий раз, когда вы можете предотвратить ненужную отступление. Также, используя поисковые конструкции (или \ k ), мы можем сопоставить часть между @ и . в $ Matchs [0] .

2
ответ дан 30 November 2019 в 06:25
поделиться

Попробуйте это регулярное выражение:

@([^.]*)\.

Выражение [^.] * будет соответствовать любому количеству любого символа, отличного от точки. И простой точка должна быть сбережной, так как это особый характер.

11
ответ дан 30 November 2019 в 06:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: