我很难找到解析开头和结尾有不同字符的标识符的最佳方法。例如,让我们说我们的标识符的起始字符可以只是大写和小写,而标识符的中间也可以包括数字和冒号。标识符的结尾可能不是冒号,但可能是撇号。
以下是所有合法标识符:
f, f0, f:', f000:sdfsd:asdf
但以下不是:
0, hello:, he'llo
我无法看到如何最好地处理回溯:中间的冒号很好,但我们需要一些先行来确定我们是否位于标识符的末尾。
编辑:
感谢您的建议。使用正则表达式是一种务实的方法,但我觉得有点令人失望的是,除此之外似乎没有干净/明显的方式。
答案 0 :(得分:1)
您可以使用正则表达式解析器处理此问题
let ident = regex @"[A-Za-z][A-Za-z0-9\:]*[A-Za-z0-9\']"
答案 1 :(得分:1)
我也认为你应该使用正则表达式,但我想出了一个不同的模式:
let pattern = regex @"^([a-zA-Z]+[a-zA-Z0-9:]*[a-zA-Z']?)$"
将在第一组中保存您想要的所有匹配。您可以使用在线RegExp tool来验证您的匹配/分组。