2013-12-21 213 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

相关问题