簡體   English   中英

JS RegEx for C#“ lambda語法”

[英]JS RegEx for C# “lambda syntax”

/^[a-z][ ][=][>][ ][a-z?][.?][a-z0-9]+[ ][=][ ]['?][a-z0-9]+['?]]/i  

我正在嘗試弄清楚如何獲得可識別lambda語法字符串的rexex模式(用於c#)

在字符串的情況下

"p => p = 'some random string'" //Must alow for single quotes  

如果是數字或布爾值

"p => p = true" /*or*/ "p => p = 25"  //Must allow for a string without single quotes with no whitespace at all in the event there are no single quotes  

另外,它必須允許使用單個“。”。 在“ =”符號左側選擇的字母中

"p => p.firstName = 'Jack'"  

如何修改我的正則表達式以滿足以下要求

  1. 以任何字母開頭
  2. 其次是必填空間
  3. 后跟強制字符串'=>'(不帶單引號)
  4. 其次是必填空間
  5. 在第1步中跟上相同的字母(或至少一個字符)
  6. 后跟一個句點字符(可選)
  7. 后跟任意一組字母數字字符(如果從第6步開始有句點,則需要此字符)
  8. 跟一個空格
  9. 后面跟等號
  10. 跟一個空格
  11. 后跟任何字母數字字符集和單引號(但僅當單引號包含字母數字字符集時)

首先,只有一個基本要點:您不需要[]圍繞所有內容 ,只需要字符類 (例如[a-zA-Z][_\\$0-9] )。

因此,讓我們按順序執行以下步驟:

  • 匹配任何字母-您不指定大小寫,讓我們都做:
    • 僅小寫: ([az])
    • 僅大寫: ([AZ])
    • 兩者: ([a-zA-Z])
    • 我們將其包裝在()以便稍后可以在反向引用中使用它。
  • 強制字符串=> (合並步驟2-4)就這樣: => 由於這些都不是特殊字符,因此無需轉義。
  • 為了獲得與步驟1相同的字母,我們將backref插入第一組( ()集合): \\1
  • 對於第6步和第7步,我們將句點以及一個字母數字字符設為可選: (\\.\\w)? 然后是零個或多個字母數字字符: \\w*
  • 現在我們有了文字字符串= ,同樣也不需要轉義這些字符,因此我們直接將其包括在內: =
  • 對於最后一步,我們有幾個選擇:
    • 一些不帶空格的數字字符: \\d+
    • 對或錯
    • 或者,單引號,除單引號外的任何字符,然后再次單引號: '[^']*' (我們使用負字符類來獲取 '所有字符)
    • 現在,使用|將這些作為替代連接在一起

綜合所有這些,我們得到最終的正則表達式:

/([a-zA-Z]) => \\1(\\.\\w)?\\w* = (\\d+|true|false|'[^']*')/i

暫無
暫無

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

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