2016-01-23 73 views
1

我想解析一個字符串,以這種格式++ VAR ++。我試過了preg_match_all(「++。*?++」,$ input,$ matches);我試過了preg_match_all(「++。*?++」,$ input,$ matches)。但失敗了。 我錯過了什麼?包括加號preg_match_all

+0

它怎麼會失敗呢?當然,你錯過了正則表達式分隔符。你有沒有像'++++++++++'這樣的字符串,你不想匹配?試試['preg_match_all('〜(!<!\ +)\ + \ +(\ w +)\ + \ +(?!\ +)〜',$ txt,$ matches);'](https:// regex101的.com/R/xI3gM5/1)。見[demo](http://ideone.com/riy5mj)。 –

+0

你檢查了答案嗎? –

回答

0

你錯過了逃避+,也忘了添加php分隔符。

preg_match_all('~\+\+.*?\+\+~', $input, $matches); 
0

你的正則表達式缺少regex delimiters。此外,+是一個特殊的正則表達式元字符(一個一個或多個量詞),它必須轉義爲被視爲字面字符。

如果你只有字母數字字符相匹配的內部雙人牀加號,您可以使用

preg_match_all('~(?<!\+)\+\+(\w+)\+\+(?!\+)~', $txt, $matches); 

this regex demo

IDEONE demo

$re = '~(?<!\+)\+\+(\w+)\+\+(?!\+)~'; 
$str = "I have ++VAR++ and +++++++++++ and +++text+++++ and ++ANOTHER_VAR++."; 
preg_match_all($re, $str, $matches); 
print_r($matches);