我正在编写一段代码以在嵌入式Python编辑器中自动生成缩进,并且我正努力检测所有用例。
foo
->下一行没有缩进foo:
->缩进foo: #bar
->缩进foo: #bar:
->缩进foo #bar:
->没有缩进到目前为止,我有这个:
Match ColonMatch = Regex.Match(curLineText, @"((:)[^:]*|#.*:)\s*$");
if (ColonMatch.Success && (ColonMatch.Groups.Count == 3) &&
(ColonMatch.Groups[2].Value == ":"))
{
// indent on next line
这适用于除情况四以外的所有情况。
我不需要考虑C风格的注释或多行python注释。
有人可以帮忙一些花哨的regex-foo吗?谢谢!
答案 0 :(得分:1)
实际上(至少在这5种情况下),您不需要正则表达式:
curLineText = curLineText.Trim();
bool indent = curLineText.Contains("#")?
curLineText.Substring(0, curLineText.Length - 1).Contains(":"):
curLineText.EndsWith(":");
更新:
我看着python,#
用于注释(不知道),因此省略它会给我们以:
结尾或不结尾的信息。这样更简单:
bool indent = curLineText.Split('#')[0].Trim().EndsWith(":");