不包含某字串的字串匹配 (Regex)

來源:互聯網
上載者:User

判斷一個字串中是否含有另一字串,有很多方法,如下:

1. 常見函數

strstr($str, "abc");

2. 正則匹配

preg_match("/(abc)/is", $str);

但是要匹配一個字串中,不包含某字串,用正則就比較麻煩了。

1. 如果不用正則如下就可以解決問題

!strstr($str, "abc");

2. 但是用正則呢,就只有這樣了

preg_match("/^((?!abc).)*$/is", $str);

完整程式碼範例

$str = "dfadfadf765577abc55fd";

$pattern_url = "/^((?!abc).)*$/is";

if (preg_match($pattern_url, $str))

{

echo "不含有abc!";

}

else

{

echo "含有abc!";

}

結果為:false,含有abc!

同時匹配,包含字串 "abc",而且不包含字串 "xyz"的Regex:

preg_match("/(abc)[^((?!xyz).)*$]/is", $str);

該方法有效,本人使用方法如下:

    (?:(?!<\/div>).|\n)*? //匹配不含</div>的一個字串

但最終使用中結果是發現,該方法效率極其低下,在處理非常短文字(要匹配該正則式的相同部分的有十幾個字,或者最多幾十個)時間可以考慮使用,但當用於大篇幅文章解析或多處需要改種匹配時間應不使用,考慮用其他方法替代(如:先解析出要匹配該段正則式的文字,然後驗證其中是否存在某段文字),Regex對於匹配不含特定字串的文欄位時並不是非常有效方法.


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.