正则表达式只匹配一个句子

时间:2013-12-02 18:48:47

标签: php regex

PHP中是否有正则表达式只匹配一个句子。例如,以大写字母开头并以.!?结尾的句子。

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

有时会使用缩写词,因此如果后跟.字符,那么2个字符或更少字符的单词不得结束句子。

2 个答案:

答案 0 :(得分: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 - 将点匹配换行符

答案 1 :(得分: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