JS RegEx for C#" lambda syntax"

时间:2016-04-03 22:43:41

标签: javascript regex

/^[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. 后跟任何字母数字字符集和单引号(但仅当单引号包含一组字母数字字符时)

1 个答案:

答案 0 :(得分:1)

首先,只是所有所需的>1 //1 test case >3 //if condition as it should entered line 124 >inp[0] 3 //confirms 3 is inp[0] >* //works as it should (if condn entered line 37) >inp[0] * >/ //works as it should >inp[0] / >+ //problem!! if condition not entered even though it should //as inp[0] == '+' (line 61) >inp[0] + //confirmation inp[0] is + right before if condition checked >Segmentation fault (core dumped) ,只有字符类(例如[][a-zA-Z])。

让我们按顺序完成您的步骤:

  • 匹配任何字母 - 您没有指定案例,请同时执行以下操作:
    • 仅限小写:[_\$0-9]
    • 仅限大写:([a-z])
    • 两者:([A-Z])
    • 我们将它包装在([a-zA-Z])中,以便稍后我们可以在后面引用它。
  • 强制字符串()(合并步骤2-4)就是这样,字面意思是:=>。由于这些都不是特殊字符,因此无需转义。
  • 要获得与第1步相同的字母,我们会在第一组(=>集)中插入backref:()
  • 对于步骤6& 7,我们将句点和一个字母数字字符作为可选字段:\1,然后是零个或多个字母数字字符:(\.\w)?
  • 现在我们有了文字字符串\w*,这些字符都不需要转义,所以我们直接包含它:=
  • 最后一步我们有几个选择:
    • 一些没有空格的数字字符:=
    • 对错
    • 或者,单引号,任何字符,但单引号再单引号:\d+(我们使用负字符类来获取所有 '[^']*'
    • 现在我们使用'
    • 将这些作为替代方案加入到一起

把所有这些放在一起,我们得到了最终的正则表达式:

|