簡體   English   中英

用preg_match提取字符串

[英]extracting string with preg_match

我有包含破折號-字符的字符串,我希望在遇到第一個破折號字符之前提取字符串的一部分, 除非破折號用單/雙引號引起來。

即。

理論“ Gabe B-裁縫”夾克-nordstrom.com我要提取理論“ Gabe B-裁縫”夾克

理論“ Gabe B-裁縫”夾克-nordstrom.com我要提取理論“ Gabe B-裁縫”夾克

裁縫外套-夾克-nordstrom.com我要提取裁縫外套

我可以在preg_match中使用什么正則表達式來達到結果?

您可以使用這樣的表達式來處理單引號和雙引號(不使用轉義符):

(?:[^-]+|"[^"]*"|'[^']*')+

或者只是捕獲所有內容直到最后-

(.+)-

非正則表達式的替代品呢?

$input = "'Gabe B - Tailor' Jacket - nordstrom.com";

$insideQuotes = false;
for ($i=0 ; $i<strlen($input) ; $i++) {

    if (!$insideQuotes && $input[$i] == "-") {
        break;
    }

    if ($input[$i] == "'" || $input[$i] == '"') {
        $insideQuotes = !$insideQuotes;
        continue;
    }
}

echo substr($input, 0, $i);

我相信您正在尋找此正則表達式-

([^-"']|"[^"]*"|'[^']*')*?(?=\s*\-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM