簡體   English   中英

php正則表達式獲取字符串模式

[英]php regex to get a string pattern

我想從原始文本中獲取所有獲利值。 但是書寫模式不一樣。

除了 20/30/50 之外,我得到了我想要的所有值。 對於那個值,我只得到 20。

我想要整個單詞為 20/30/50

$s = 'SS 1.0140 SL 1.0670 TP1 1.0870 TP 1 1.0870 TP 2 1.0870 Takeprofit1 1.0870 Take profit 1 1.0870 TP 1.0870 TP 20/30/50 TP-----1.0870 TP=1.0870 TP1=1.0870 TP Open';

$p = '#\b(TAKE ?PROFIT ?(?:[1-3]|\|TP|at)|TP ?(?:[1-3](?!\.\d))?)\b(.*?)\b(Open|(\d+(?:\.\d+)?))\b#i';

preg_match_all($p , $s , $m);

$m[3]

Array
(

    [3] => Array
        (

            [0] => 1.0870
            [1] => 1.0870
            [2] => 1.0870
            [3] => 1.0870
            [4] => 1.0870
            [5] => 1.0870
            [6] => 20
            [7] => 1.0870
            [8] => 1.0870
            [9] => 1.0870
            [10] => Open
        )
)

(?:/\\d+)*到您的第三個捕獲組。

https://regex101.com/r/hsQ0xD/1/

這使得重復的非捕獲組(子字符串)“斜線然后一個或多個數字”是可選的。

代碼:(演示

$s = 'SS 1.0140 SL 1.0670 TP1 1.0870 TP 1 1.0870 TP 2 1.0870 Takeprofit1 1.0870 Take profit 1 1.0870 TP 1.0870 TP 20/30/50 TP-----1.0870 TP=1.0870 TP1=1.0870 TP Open';

$p = '#\b(TAKE ?PROFIT ?(?:[1-3]|\|TP|at)|TP ?(?:[1-3](?!\.\d))?)\b(.*?)\b(Open|(\d+(?:\.\d+)?(?:/\d+)*))\b#i';

preg_match_all($p , $s , $m);

var_export($m[3]);

輸出:

array (
  0 => '1.0870',
  1 => '1.0870',
  2 => '1.0870',
  3 => '1.0870',
  4 => '1.0870',
  5 => '1.0870',
  6 => '20/30/50',
  7 => '1.0870',
  8 => '1.0870',
  9 => '1.0870',
  10 => 'Open',
)

暫無
暫無

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

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