簡體   English   中英

PHP正則表達式提取的字符串值

[英]php RegEx extract values from string

我是正則表達式的新手,並且嘗試從此字符串中提取一些特定的值:

“ Iban:EU4320000713864374 \\ r \\ n快捷方式:DTEADCCC \\ r \\ nreg.no 2361 \\ r \\ n帳戶編號1234531735”

我嘗試提取的值:

EU4320000713864374

2361

這就是我現在想要做的:

preg_match('/[^Iban: ](?<iban>.*)[^\\r\\nreg.no ](?<regnr>.*)[^\\r\\n]/',$str,$matches);

我所得到的只是空數組或空數組。 任何建議將不勝感激

方括號沒有意義,您可能打算將其錨定在行的開頭:

$result = preg_match(
    '/^Iban: (?<iban>.*)\R.*\R^reg.no (?<regnr>.*)/m'
    , $str, $matches
);

這需要設置多行修飾符(請參閱最后的m )。 我還更換\\r\\n\\R ,使得該易處理所有種類線分離器序列。

示例: https//eval.in/47062

稍微好一點的變體則僅捕獲非空白值:

$result = preg_match(
    '/^Iban: (?<iban>\S*)\R.*\R^reg.no (?<regnr>\S*)/m'
    , $str, $matches
);

示例: https//eval.in/47069

結果為(美化):

Array
(
    [0]     => "Iban: EU4320000713864374
Swift: DTEADCCC
reg.no 2361"
    [iban]  => "EU4320000713864374"
    [1]     => "EU4320000713864374"
    [regnr] => "2361"
    [2]     => "2361"
)
preg_match("/Iban: (\\S+).*reg.no (\\S+)/s", $str, $matches);

關於換行符有一個特殊的功能:點(。)與換行符不匹配,除非指定了s標志。

暫無
暫無

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

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