带有明文的正则表达式样式指南

时间:2017-02-02 10:06:46

标签: regex tokenize

我尝试使用tokenize,因为我想编写基于C#的自己的脚本语言。

所以现在,我只是玩了一下,我正在学习正则表达式。所以,我对正则表达式很新。

例如,我想匹配

foreach(str x:test.GetItems())

并获取组值strxtest.GetItems()

我的正则表达式是:

foreach\s*\((\s*([A-Za-z0-9]+)\s+([A-Za-z0-9]+))\s*\:\s*(.+)\)
到目前为止,这是有效的。

所以我的问题是:

  • 这是一种很好的做法,可以使用硬编码的字符序列,例如:我的正则表达式foreach?如果没有,您希望我做什么
  • 对于我的语法中的:,我可以使用正则表达式:\:进行编写。 RegExr.com允许两者并匹配两者(但以其他颜色显示它们。但是,它写Matches a ":" character (char code 58).我应该逃避角色,还是不应该?

1 个答案:

答案 0 :(得分:1)

  

在我的正则表达式中使用硬编码的字符序列[...]是不错的做法?

您需要匹配文字字符串,(foreachusing甚至potato),然后按原样编写。绝对没有理由为什么你会逃脱/分裂/任何与它有关。

  

对于我语法中的:,我可以使用正则表达式:\:进行编写。 [...]我应该逃避这个角色,还是我不应该?

由于:没有任何特殊含义,因此您无需逃避它。此外,您不应该转义它,因为某些正则表达式引擎可能会引发语法错误。

颜色不匹配可能是因为此屏幕截图提示的解析不当:enter image description here

c应为紫色或其他所有应为黑色(\s除外)