Я хотел бы к возвращаемой строке между двумя символами, и точка (.).
Я пытался использовать regex, но не могу найти это работой.
(@(.*?).)
Кто-либо?
Ваше регулярное выражение почти работает, вы просто забыли сбежать период. Также в PHP вам нужны разделители:
'/@(.*?)\./s'
S - модификатор dotall .
Вот полный пример того, как вы можете использовать его в PHP:
$s = 'foo@bar.baz';
$matches = array();
$t = preg_match('/@(.*?)\./s', $s, $matches);
print_r($matches[1]);
Вывод:
bar
Если вы изучаете REGEX, вы также можете проанализировать их:
@\K[^.]++(?=\.)
(?<=@)[^.]++(?=\.)
оба этих регулярных выражения используют притягивающие квантификаторы ( ++
). Используйте их всякий раз, когда вы можете предотвратить ненужную отступление. Также, используя поисковые конструкции (или \ k
), мы можем сопоставить часть между @
и .
в $ Matchs [0]
.
Попробуйте это регулярное выражение:
@([^.]*)\.
Выражение [^.] *
будет соответствовать любому количеству любого символа, отличного от точки. И простой точка должна быть сбережной, так как это особый характер.