0

我很难找到解析开头和结尾字符不同的标识符的最佳方法。例如,假设我们的标识符的起始字符可能只有大写和小写,而标识符的中间也可能包含数字和冒号。标识符的结尾可能不是冒号,但可能是撇号。

所以以下都是合法的标识符:

f, f0, f:', f000:sdfsd:asdf

但以下不是:

0, hello:, he'llo

我看不出如何最好地处理回溯:中间有一个冒号很好,但我们需要一些前瞻来确定我们是否在标识符的末尾。

编辑:

感谢您的建议。使用正则表达式是一种务实的方法,但我觉得有点令人失望,否则似乎没有干净/明显的方式来做这件事。

4

2 回答 2

1

我也认为你应该使用正则表达式,但是我想出了一个不同的模式:

let pattern = regex @"^([a-zA-Z]+[a-zA-Z0-9:]*[a-zA-Z']?)$"

它将在第一组中保存所有您想要的比赛。您可以使用在线RegExp 工具来验证您的匹配/分组。

于 2014-05-27T20:57:25.177 回答
1

您可以使用正则表达式解析器处理此问题

let ident = regex @"[A-Za-z][A-Za-z0-9\:]*[A-Za-z0-9\']"

http://www.quanttec.com/fparsec/reference/charparsers.html

于 2014-05-27T17:02:49.757 回答