亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

PHP
慕蓋茨4494581 2022-09-03 16:39:41
我想從原始文本中獲取所有止盈值。但是書寫模式并不相同。我得到了我想要的所有值,除了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        ))
查看完整描述

1 回答

?
紅顏莎娜

TA貢獻1842條經驗 獲得超13個贊

添加到第三個捕獲組。(?:/\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',

)


查看完整回答
反對 回復 2022-09-03
  • 1 回答
  • 0 關注
  • 89 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號