[英]I need help about regex php
<?php
$regex = '<p>ttt<p>';
if (preg_match('#<p>[a-z]<p>#i', $regex, $result))
{
echo 'True';
echo $result[0];
}
else
{
echo 'False';
}
?>
基本上,這段代碼給我False。 但是,如果我將[az]
替換為[az]*
則代碼會正確。
或者,如果我保留[az]
而不帶*
,但是我刪除了preg_match
中的<p><p>
,則代碼使我成為true。
老實說,我不明白為什么第一個給我假,而其他給我假。 誰能解釋我為什么?
不管您信不信, [az]
被認為是一個字符。 就像我放[ab]
,那也將是“一個字符”。 [az]
表示字符可以是任何字母:abcdefghijklmnopqrstuvwxyz。 現在,當我們添加[az]*
我們允許[az]
一個字符具有0個或多個重復。
<?php
$regex = '<p>ttt<p>';
if (preg_match('#<p>[a-z]*<p>#i', $regex, $result))
{
echo 'True';
echo $result[0];
}
else
{
echo 'False';
}
?>
在這里查看結果:
[az]
僅捕獲一個字符,而[az]*
捕獲長度最大為0到n的字符。
並且您的模式應該用/
封裝
/<p>[a-z]*<p>/i
我幾天前發布了另一個問題作為評論。
我會以職位要求。
如果[az]被認為是一個字符。
<?php $regex = '<p>ttt<p>'; if (preg_match('/<p>[az]<p>/i', $regex, $result)) { echo 'True'; echo $result[0]; } else { echo 'False'; } ?>
給我假,因為'ttt'基本上是3個字符,對嗎?
然而,
<?php $regex = '<p>ttt<p>'; if (preg_match('/[az]/i', $regex, $result)) { echo 'True'; echo $result[0]; } else { echo 'False'; } ?>
這段代碼使我成真,但是上面的字符串基本上是9個字符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.