Php preg\u匹配\u更改字符串之间的所有文本

Php preg\u匹配\u更改字符串之间的所有文本,php,regex,preg-match,preg-match-all,Php,Regex,Preg Match,Preg Match All,我需要使用preg_match_all获取某些字符串之间的文本。我尝试过使用交替,但是我没有得到正确的信息。我需要的是获取工作日字符串之间的随机文本。从星期五到课文结束 我的数据如下: 1.1星期一。 随机文本 随机文本 星期二2.1。 随机文本 随机文本 星期三3.1 随机文本 随机文本 星期四4.1。 随机文本 随机文本 随机文本 星期五5.1 随机文本 随机文本 我现在看到的是这个,但它只捕获了周一之后的内容,而周一应该停到周二,然后再做一次: /(周一|周二|周三|周四|周五)([\s

我需要使用preg_match_all获取某些字符串之间的文本。我尝试过使用交替,但是我没有得到正确的信息。我需要的是获取工作日字符串之间的随机文本。从星期五到课文结束

我的数据如下:

1.1星期一。
随机文本
随机文本
星期二2.1。
随机文本
随机文本
星期三3.1
随机文本
随机文本
星期四4.1。
随机文本
随机文本
随机文本
星期五5.1
随机文本
随机文本
我现在看到的是这个,但它只捕获了周一之后的内容,而周一应该停到周二,然后再做一次:

/(周一|周二|周三|周四|周五)([\s\s]+)/

有什么想法吗?

试试这个,使用
m
修饰符和
^
+
$
来匹配文本的每一行

$datas = <<<data
Monday 1.1.
randomtext
randomtext
Tuesday 2.1.
randomtext
randomtext
Wednesday 3.1
randomtext
randomtext
Thusday 4.1.
randomtext
randomtext
randomtext
Friday 5.1
randomtext
randomtext
data;
preg_match_all('#^(?!Monday|Tuesday|Wednesday|Thusday|Friday)\w+$#im',$datas,$matches);
print_r($matches);

$datas=您可以使用
preg\u split()

$day_pattern='/([a-z]+?day[\d\.]+\n)/i';
$bits=预分割(
$day_模式,
$str,
无效的
PREG_SPLIT_NO_EMPTY|PREG_SPLIT_DELIM_CAPTURE
);
如果(位)
foreach($bit作为$bit)
回声预匹配($day\u模式,$bit)
?
“.$bit.”
:
“”.$bit.“

”;
输出

<h3>Monday 1.1.</h3>
<p>randomtext
randomtext</p>
<h3>Tuesday 2.1.</h3>
<p>randomtext
randomtext</p>
<h3>Wednesday 3.1</h3>
<p>randomtext
randomtext</p>
<h3>Thusday 4.1.</h3>
<p>randomtext
randomtext
randomtext</p>
<h3>Friday 5.1</h3>
<p>randomtext
randomtext</p>
1.1星期一。
随机文本
随机文本

星期二2.1。 随机文本 随机文本

星期三3.1 随机文本 随机文本

星期四4.1。 随机文本 随机文本 随机文本

星期五5.1 随机文本 随机文本


在您的示例中,实际上“随机文本…”不在特定字符串之间,因为它缺少末尾的字符串,即在星期五之后

Monday 1.1.
randomtext1
randomtext2
Tuesday 2.1.
randomtext3
randomtext4
Wednesday 3.1
randomtext5
randomtext6
Thursday 4.1.
randomtext7
randomtext8
randomtext9
Friday 5.1
randomtext10
randomtext11
Monday
如果文本如上所示,即它总是在工作日字符串之间,则可以使用以下模式

 (?<=Monday|Tuesday|Wednesday|Thursday|Friday)([\s\S]+?)(?=Monday|Tuesday|Wednesday|Thursday|Friday)
(?
 (?<=Monday|Tuesday|Wednesday|Thursday|Friday)([\s\S]+?)(?=Monday|Tuesday|Wednesday|Thursday|Friday)