2014-12-17 3 views
0

Я пытаюсь заставить регулярное выражение работать, чтобы взять все после «теста» и до «@» по электронной почте, поэтому «[email protected] станет 12345.Regex взять все после слова и перед символом в PHP

Я получил это далеко, чтобы заставить его вернуть все до символа «@». (Работа в PHP)

!(\d+)@! 
+1

* принять все после того, как "тест" и до "@" *, то результат должен быть '-12345' – Braj

ответ

3

Либо вы можете использовать захват группы и использовать регулярное выражение

test-(\d+)@ 

и использовать $1 или использовать lookaheads и зады, как (?<=test-)\d+([email protected]), которые только соответствуют 12345

0

Вы хотите, чтобы все между test и @ поэтому не используйте \d.

$myRegexPattern = '#test([^@])*@#Ui'; 
preg_match ($myRegexPattern, $input, $matches); 
$whatYouNeed = $matches[1]; 
0

Попробуйте

$input = '[email protected]'; 
$regexPattern = '/^test(.*?)\@/'; 
preg_match ($regexPattern, $input, $matches); 
$whatYouNeed = $matches[1]; 
var_dump($whatYouNeed); 
Смежные вопросы