Выбираем только буквенно-цифровые слова. Регулярное выражение. PHP - PullRequest
5 голосов
/ 14 января 2010

Я пытаюсь найти регулярное выражение, чтобы найти только буквенно-цифровые слова из строки, то есть слова, которые являются комбинацией алфавитов или цифр. Если слово является чистыми числами или чистыми символами, мне нужно отбросить его.

Ответы [ 4 ]

6 голосов
/ 14 января 2010

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

\b([a-z]+[0-9]+[a-z0-9]*|[0-9]+[a-z]+[a-z0-9]*)\b

или более компактный:

\b([a-z]+[0-9]+|[0-9]+[a-z]+)[a-z0-9]*\b

Это соответствует всем словам (обратите внимание на границы слов \b), которые начинаются с одной или нескольких букв, за которыми следуют одна или несколько цифр, или наоборот, за которыми могут следовать одна или несколько букв или цифр. Таким образом, условие хотя бы одной буквы и хотя бы одной цифры всегда выполняется.

3 голосов
/ 14 января 2010

С предвкушением:

'/\b(?![0-9]+\b)(?![a-z]+\b)[0-9a-z]+\b/i'

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

$str = 'foo bar F0O 8ar';
$arr = array();
preg_match_all('/\b(?![0-9]+\b)(?![a-z]+\b)[0-9a-z]+\b/i', $str, $arr);
print_r($arr);

Выход:

F0O
8ar
0 голосов
/ 15 января 2010
\b(?:[a-z]+[0-9]+|[0-9]+[a-z]+)[[:alnum:]]*\b
0 голосов
/ 14 января 2010

Это вернет все отдельные буквенно-цифровые слова, которые вы можете просмотреть. Я не думаю, что регулярное выражение может сделать всю работу самостоятельно.

\b[a-z0-9]+\b

Убедитесь, что вы отметили это без учета регистра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...