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

regex styleguide with plaintext

我正尝试从标记化开始,因为我想编写自己的基于 C# 的脚本语言。

所以现在,我只是玩了一会儿,正在更深入地学习正则表达式。所以,我对正则表达式很陌生。

比如我要匹配

foreach(str x:test.GetItems())

并获取组值 strxtest.GetItems()

我的正则表达式是:

foreach\s*\((\s*([A-Za-z0-9]+)\s+([A-Za-z0-9]+))\s*\:\s*(.+)\)

到目前为止这有效。

所以我的问题是:

Is it good practice to have something like hard-coded character-sequences [...] in my regex?

您需要匹配文字字符串,(foreachusing 甚至 potato) 然后按原样编写。您绝对没有理由 escape/split/anythingelse 使用它。

for the : in my syntax, I can write in regex : or also \:. [...] Should I escape the character, or shouldn't I?

因为:没有什么特殊意义,所以不用转义。此外,你不应该转义它,因为某些正则表达式引擎可能会引发语法错误。

颜色不匹配可能是由于解析不当造成的,如下图所示:

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