2013-12-02 2 views
2

Есть ли регулярное выражение в PHP для соответствия только одному предложению. Например, предложение, начинающееся с прописной буквы и заканчивающееся ., ! или ?.Regex соответствует только одному предложению

preg_match(/regex here/g, $string, $matches); 

И иногда аббревиатуры используются так слова с 2 символов или менее не должны закончить предложение, если оно сопровождается ..

+1

Это легко придумать контрпримеры, где ваше определение предложения неверно , Это бам! и вот ты где. – tripleee

ответ

0

a sentence starting with a capital letter and ending with ., ! or ?

Вы можете использовать:

preg_match('/[A-Z].*?[.!?]/s', $string, $matches); 

Детали:

  • [A-Z] - To match any capital letter
  • .*? - Match a string of 0 or more characters (non greedy)
  • [.!?]/ - Match one of . OR ! OR ?
  • /s - Сделать матч точка новой строки, а также
+2

Должно быть, '[.!?]' В соответствии с предоставленным определением .. и, конечно же, очень легко сломать такую ​​конструкцию: «Г-н Генри крикнул:« Мне нравятся яблоки! » пока он танцевал ». – user2864740

0

Попробуйте это: ["'“]?([A-Z]((?!([A-Za-z]{2,}|\d+)[.?!]+["']?\s+["']?[A-Z]).)*)(((Mr|Ms|Mrs|Dr|Capt|Col)\.\s+((?!\w{2,}[.?!]['"]?\s+["']?[A-Z]).)*)?)*((?![.?!]["']?\s+["']?[A-Z]).)*[.?!]+["'”]?

Источник: http://www.sitepoint.com/forums/showthread.php?779582-Choose-whole-sentences-and-ONLY-whole-sentences-RELIABLY-with-regex

+0

Это также очень прерывисто. Название очень вводит в заблуждение с помощью «REALIABLY». – user2864740

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