簡體   English   中英

PHP正則表達式-提取數據

[英]PHP Regular Expression - Extract Data

我有一個長字符串,並且正在嘗試提取由特定單詞在該字符串中定義的特定數據。

例如,這是字符串的子集:

Current   Owner  123 Capital    Calculated  

我正在尋找提取

123 Capital

如您所見,它的左邊是“當前所有者”(帶有一堆任意空格),右邊是“已計算”(同樣是帶有任意空格)。

我試過了,但是RegEx有點新。 誰能幫助我創建更有效的RegEx?

preg_match("/Owner[.+]Calculated/",$inputString,$owner);

謝謝!

字符類定義一組字符。 說“匹配類指定的一個字符”。 放置點. 取而代之的是在捕獲組內添加量詞,並啟用s修飾符,該修飾符可強制點跨越換行符。

preg_match('/Owner(.+?)Calculated/s', $inputString, $owner);
echo trim($owner[1]);

注意: +貪婪的運算符,表示它將盡可能匹配,並且仍然允許正則表達式的其余部分匹配。 使用+? 相反,為了防止貪婪,意思是“一個或多個-最好盡可能少”。

您可以使用環顧四周

(?<=Owner)\s*.*?(?=\s+Calculated)

用法示例

$str = "Current Owner 123 Capital Calculated ";
preg_match("/(?<=Owner)\s*.*?(?=\s+Calculated)/", $str, $matches);
print_r($matches);

將給出輸出

Array ( [0] => 123 Capital ) 

希望對您有所幫助,組索引1是您的目標:

Owner\\s+(\\d+\\s+\\w+)\\s+Calculated

您可能還想嘗試使用RegExr之類的工具來幫助您學習/修補。

暫無
暫無

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

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