简体   繁体   English

用reg ex分隔字符串

[英]separate string with reg ex

When I try to separate this string: 当我尝试分隔此字符串时:

<b>Pristatymo laikas: </b>08-17h (visoje Lietuvoje)<br /><b>Dovanų kuponai:</b> <br />Panaudotas 200.00 Lt. dovanų kuponas, kurio kodas: xxxxx<br /><b>Mokėtina suma:</b> 12.00 Lt. <br />

with reg ex pattern: 使用reg ex模式:

<b>(.*)</b>

I get this match: 我得到这个比赛:

<b>Pristatymo laikas: </b>08-17h (visoje Lietuvoje)<br /><b>Dovanų kuponai:</b> <br />Panaudotas 200.00 Lt. dovanų kuponas, kurio kodas: xxxxx<br /><b>Mokėtina suma:</b>

But I what get all words in <b> tag separated like: 但是我将<b>标记中的所有单词分开的原因是:

<b>Pristatymo laikas: </b>
<b>Dovanų kuponai:</b>
<b>Mokėtina suma:</b>

How to write correct pattern? 如何写正确的图案?

Use .*? 使用.*? instead: 代替:

<b>(.*?)</b>

The ? ? quantifier (non-greedy) matches as little as possible and thus stops at the first encounter of </b> 量词(非贪婪)尽可能少地匹配,因此在</b>的第一次遇到时停止

DEMO DEMO

You need to follow .* with ? 您需要在.*加上? for a non-greedy match. 进行非贪婪的比赛。

<b>(.*?)</b>

Although you can do this with a simple regular expression, it is better to use a Parser for this. 尽管您可以使用简单的正则表达式来执行此操作,但最好使用解析器。

$html = '<b>Pristatymo laikas: </b>08-17h (visoje Lietuvoje)<br />
<b>Dovanų kuponai:</b> <br />Panaudotas 200.00 Lt. dovanų kuponas, kurio kodas:
xxxxx<br /><b>Mokėtina suma:</b> 12.00 Lt. <br />';

$doc = new DOMDocument();
$doc->loadHTML($html); 

$xpath = new DOMXPath($doc);

foreach ($xpath->query('//b') as $tag) {
   echo $tag->ownerDocument->saveHTML($tag) . "\n";
}

Output : 输出

<b>Pristatymo laikas: </b>
<b>Dovanų kuponai:</b>
<b>MokÄtina suma:</b>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM