2012-05-23 8 views
1

Я пытаюсь найти строку в PHP с помощью preg_match(), чтобы вернуть строку, которая принимает формат «xdr», где x - одна цифра.Регулярное выражение: обнаружить специфическую строку

Строка иначе состоит из символов, цифр, '.' полные остановки и пробелы.

Я безнадежно с регулярными выражениями, может кто-нибудь помочь мне?

Я попытался ^([a-zA-Z0-9]+)\s2dr$, но он не работает

Например, строка может выглядеть A really big 2.0 was 3dr once

+2

Можете ли вы показать некоторые примеры строк, которые вы ожидаете, чтобы соответствовать и не соответствовать? – gregmac

+1

Что именно вы пытаетесь поймать в этой строке примера? – inhan

ответ

2

Насколько я понимаю ваши потребности, это регулярное выражение будет работать, чтобы соответствовать строку, которая содержит некоторое число, затем dr:

/\b\d+dr\b/ 

в действии в preg_match:

preg_match('/\b\d+dr\b/', $string); 

объяснение:

/  : regex delim 
    \b : word boundary 
    \d+ : one or more digit 
    dr : literaly dr 
    \b : word boundary 
/ : regex delim 

Если вы хотите, чтобы другие символы только characters, numbers, '.' full stops and spaces использовать это:

preg_match('/^[\w\d. ]*\b\d+dr\b[\w\d. ]*$/', $string); 

И, чтобы быть юникода совместимы:

preg_match('/^[\pL\pN. ]*\b\pN+dr\b[\pL\pN. ]*$/', $string); 
0

Вы близки.

Следующее регулярное выражение будет соответствовать одной цифре, а затем один или несколько буквенных символов, цифр, полных остановок и пробелов и заканчивается на dr.

^\d[a-zA-Z0-9. ]+dr$ 

Примечание: Не уверен, что если вы хотите буквальный dr, если нет, то поместите его с конца.

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