2017-09-01 113 views
2

元素,我想從一個包含字符串中的表達式元素。C#正則表達式進去表達

例如:獲得從表達元件,其中表達式是

@@Expr[propAge>10?'ignore>':'ignore?']

和表達式是

@@Expr[PropSex='M'?'ignore>']"

在這種情況下,我感興趣的由上述獲得兩個字符串數組串

array1 = ["propAge",">","'ignore>'","'ignore?'"] 
array2 = ["propSex","=","'M'","'ignore>'"] 
+0

我不能完全肯定,但我認爲這個問題完全被破壞的編輯。我認爲*「例如爲:」 *後的文本最初被認爲是爲了得到結果要分析的源字符串? – grek40

+1

你應該**首先嚐試**的東西。 – tchelidze

回答

2

喜歡的東西

\[(.+?)([<>=])(.+?)\?(.+?)(?::(.+?))?] 

應該工作。

注意,如果有反斜槓轉義或最後兩個運營商中的冒號這很可能會失敗。

Regexr test.

+0

謝謝。這給了我第一次發生。我如何在我的字符串中獲得所有正則表達式? –

0

通常寫作只用正則表達式解析器是一個壞主意,因爲你試圖區分在不同環境下相似的令牌時遇到各種有趣的問題。而且,只有兩個樣本往往不足以寫出一個好的正則表達式。

話雖這麼說,你的情況,你也許可以使用類似以下內容:

(?xi) # turn on comments mode and case-insensitivity 
    '[^']+' # strings like 'ignore?' 
| 
    (?<=\[.*) # ensure that there's an opening square bracket to the left 
      # to not match the @@Expr part 
    [a-z]+ # matches e.g. propAge 
| 
    [<>=]  # operators 

它使用了大量的交替來表達的不同部分匹配。