带有纯文本的正则表达式样式指南
regex styleguide with plaintext
我正尝试从标记化开始,因为我想编写自己的基于 C# 的脚本语言。
所以现在,我只是玩了一会儿,正在更深入地学习正则表达式。所以,我对正则表达式很陌生。
比如我要匹配
foreach(str x:test.GetItems())
并获取组值 str
、x
、test.GetItems()
我的正则表达式是:
foreach\s*\((\s*([A-Za-z0-9]+)\s+([A-Za-z0-9]+))\s*\:\s*(.+)\)
到目前为止这有效。
所以我的问题是:
- 使用硬编码字符序列之类的东西是一种好习惯吗?
foreach
在我的正则表达式中?如果不是,你希望我做什么?
- 对于语法中的
:
,我可以用正则表达式 :
或 \:
来写。 RegExr.com 允许两者并匹配两者(但以其他颜色显示它们。尽管如此,它写 Matches a ":" character (char code 58).
)我应该转义字符,还是不应该?
Is it good practice to have something like hard-coded character-sequences [...] in my regex?
您需要匹配文字字符串,(foreach
、using
甚至 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
除外)
我正尝试从标记化开始,因为我想编写自己的基于 C# 的脚本语言。
所以现在,我只是玩了一会儿,正在更深入地学习正则表达式。所以,我对正则表达式很陌生。
比如我要匹配
foreach(str x:test.GetItems())
并获取组值 str
、x
、test.GetItems()
我的正则表达式是:
foreach\s*\((\s*([A-Za-z0-9]+)\s+([A-Za-z0-9]+))\s*\:\s*(.+)\)
到目前为止这有效。
所以我的问题是:
- 使用硬编码字符序列之类的东西是一种好习惯吗?
foreach
在我的正则表达式中?如果不是,你希望我做什么? - 对于语法中的
:
,我可以用正则表达式:
或\:
来写。 RegExr.com 允许两者并匹配两者(但以其他颜色显示它们。尽管如此,它写Matches a ":" character (char code 58).
)我应该转义字符,还是不应该?
Is it good practice to have something like hard-coded character-sequences [...] in my regex?
您需要匹配文字字符串,(foreach
、using
甚至 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
除外)