繁体   English   中英

PHP-正则表达式完全匹配

[英]php - regex exact matches

我有以下字符串:

Falchion-Case
P90-ASH-WOOD-WELL-WORN

我在文本文件中还有以下URL:

http://csgo.steamanalyst.com/id/115714004/FALCHION-CASE-KEY-
http://csgo.steamanalyst.com/id/115716486/FALCHION-CASE-
http://csgo.steamanalyst.com/id/2018/P90-ASH-WOOD-WELL-WORN

我遍历文本文件中的每一行,并检查是否在URL中找到了该字符串:

// Read from file
if (stristr($item, "stattrak") === FALSE) {
    $lines = file(public_path().'/csgoanalyst.txt');
    foreach ($lines as $line) {
    // Check if the line contains the string we're looking for, and print if it does
        if(preg_match('/(?<!\-)('.$item.')\b/',$line) != false) {  // case insensitive
            echo $line;
            break;
        }
    }
}

$item = P90-ASH-WOOD-WELL-WORN时,此方法非常有效,但是当$item = Falchion-Case它仅在第二个URL上才匹配: http://csgo.steamanalyst.com/id/115716486/FALCHION-CASE- : $item = Falchion-Case http://csgo.steamanalyst.com/id/115716486/FALCHION-CASE-有效

假设行结束,请尝试修改您的regx以匹配行尾

 '/('.$item.')$/'

这将匹配

  http://csgo.steamanalyst.com/id/115714004/FALCHION-CASE-KEY- <<end of line

基本上以类型匹配结束,您也可以这样做

   '/('.$item.')\-?$/'

可选地匹配结尾的连字符

您还可以使用否定的前瞻来否定这种不需要的情况:

preg_match('/(?<!-)'. preg_quote($item) .'(?!-\w)/i', $line);

暂无
暂无

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

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