php preg_split: как теперь включить все регулярные выражения для разбиения? - PullRequest
1 голос
/ 18 ноября 2011

Учитывая следующее предложение:

The is 10. way of doing this. And this is 43. street.

Я хочу, чтобы preg_split дал это:

Array (
 [1] => "This is 10. way of doing this"
 [2] => "And this is 43. street"
)

Я использую:

preg_split("/[^\d+]\./i",$sentence)

Но это дает мне:

Array (
 [1] => "This is 10. way of doing thi"
 [2] => "And this is 43. stree"
)

Как видите, последний символ предложения исчез.Я знаю, почему это происходит, но я не знаю, как это предотвратить.Есть идеи?Могут ли здесь помочь оглядывающиеся головы?Я не очень знаком с ними.

1 Ответ

2 голосов
/ 18 ноября 2011

Вы хотите использовать отрицательное утверждение для этого:

preg_split("/(?<!\d)\./i",$sentence)

Разница в том, что [^\d]+ станет частью матча, и, таким образом, split удалит его,Утверждение (?! также сопоставляется, но имеет нулевую ширину, что означает, что оно не становится частью соответствия разделителя и, следовательно, не будет отброшено.

...