2017-02-20 60 views
1

我想寫一個正則表達式能夠捕獲第一個<字符,該字符不是從\(開始並以\)結尾的塊的一部分。正則表達式來捕獲<不是一個(... )塊的一部分

一些例子:

  1. foo1<foo2<fooooo3應該返回第一<字符。
  2. \( gzgajk < lmklklml < \) foo1 < foo2應該返回第三個<字符。
  3. \(sss < ljlj\) foo1 \(sqdzadz <jiojuioio\) foo2 < foo3還應該返回第三個<字符。

我一直在尋找使用積極的背後能力,但我沒有成功,因爲正面看後面應該是固定長度。

關於該主題的任何線索?

+2

如果找到了<<在匹配的位置?在任何情況下,該值都是「<」 – RomanPerekhrest

+0

@ chris85感謝您的評論。我不知道'* SKIP'和'* FAIL'關鍵字。 –

+0

@ chris85是的,這是有效的。您可以將其移至答案。 –

回答

0

不知道你想在這裏achive什麼,但看看這個:

$subject ='\(sss < ljlj\) foo1 \(sqdzadz <jiojuioio\) foo2 < foo3'; 
preg_match ('#([<]{1})#', $subject , $matches, 0, (int)strrpos($subject,')')); 
print_r($matches); 
  • strrpos()獲取最後)的位置,如果沒有找到它的位置開始0
  • preg_match()將知道從這個位置看下一個<