2013-12-21 263 views
0

我捲曲的頁面,並獲得輸出正則表達式匹配的字符串,只有一個大寫字母

但正在發生的事情是,HTML編碼被去除,新的生產線被跳過,

所以它看起來像這樣

This is Bob. He lives in an boatBut he only has one oar to row with. 

爲了檢測新行我想,這是容易,只需檢查字符串只能有一個大寫字母和空格其間,到目前爲止,我有這個

(\s\w+\s\w+.\s\D+[a-z][A-Z]) 

然而,這似乎並沒有工作

,因爲它僅匹配這個

is Bob. He lives in an boatB 

看到這裏http://regex101.com/r/gH0lW1

如何搭配有空格所有字符串,並符合所有字符串達人大寫字母

回答

0

更新:這將拆分的條件,而不會失去任何ch aracters

<?php 

$string = "This is Bob. He lives in an boatBut he only has one oar to row with.He also does stuff, it is cool."; 
$array = preg_split('/(?<=[a-z.])(?=[A-Z])/', $string); 
print_r($array); 

?> 

用積極的回顧後,以確保您獲得資本小寫後:

(?<=[a-z])[A-Z] 

http://regex101.com/r/cB7bD8

,如果你願意,你可以使用PHP的preg_split,爆炸的結果在這個正則表達式。

+0

這隻匹配B我需要它匹配這是鮑勃。他住在一艘船 – user3117904

+0

@ user3117904'(?<= [a-z])[A-Z]。*' – brandonscript

+0

這個匹配但他只有一條槳排。我需要它匹配第一位,歡呼 – user3117904

0
(.*?(?:\w+(?=[A-Z]))|\1) 

這個正則表達式有一個遞歸部分,它將匹配整個文本中的多個句子。所以你可以檢查Live demo並查看匹配的組。

但是,

如果你想包括在每個句子換行一段時間後開始以及,然後我修改上述正則表達式來這(。):

(.*?(?:(?:\w+|\. *)(?=[A-Z]))|\1) 

現在您可以將結果與第一個正則表達式進行比較HERE

相關問題