Regex для разделения буквенно-цифровых, валютных и цифровых терминов в PHP - PullRequest
0 голосов
/ 07 января 2012

Я пытаюсь разбить строку на термины в PHP, используя preg_split.Мне нужно извлечь обычные слова (\ w), а также валюту (даже символ валюты) и числовые термины (включая запятые и десятичные точки).Может кто-нибудь помочь мне, так как я не могу создать действительное регулярное выражение, чтобы использовать для preg_split для достижения этой цели.Спасибо

Ответы [ 3 ]

1 голос
/ 07 января 2012

Почему бы не использовать preg_match_all() вместо preg_split()?

$str = '"1.545" "$143" "$13.43" "1.5b" "hello" "G9"'
  . ' This is a test sentence, with some. 123. numbers'
  . ' 456.78 and punctuation! signs.';

$digitsPattern = '\$?\d+(\.\d+)?';
$wordsPattern = '[[:alnum:]]+';

preg_match_all('/('.$digitsPattern.'|'.$wordsPattern.')/i', $str, $matches);

print_r($matches[0]); 
1 голос
/ 07 января 2012

Как насчет preg_match_all() каждого слова с этим [\S]+\b, тогда вы получите массив со словами в нем.

Большая коричневая лиса - $ 20,25 вернется

preg_match_all('/[\S]+\b/', $str, $matches);

$matches = array(
 [0] = 'Big',
 [1] = 'brown',
 [2] = 'fox',
 [3] = '$20.25'
)
0 голосов
/ 07 января 2012

Решает ли ваша проблема разделение на пробелы?"/\s+/"

...