2010-10-29 145 views
0

我即将开始工作,在一个新的项目工作。基本上有许多化合物,每个都有自己的前缀/标识符。例如,几个字符后跟几个整数等等,它们都是不同的。模式匹配

我想知道是否有用于有效地匹配这些元件,而不是具有一个巨大的if else的算法。

我猜哈希映射键 - >键为一些屏蔽值可能是好的,但我希望有人能稍微更复杂的,我可以用一些建议。

因为它不仅仅是化合物的不同值的数量可能是巨大的。

感谢

+0

没有,化合物的内部表示发达,但数据库不会削减它为用户搜索的字可以absolutley什么,我必须根据显示的适当信息(可以来自许多不同的数据库),这就是为什么正确识别字符串并且更重要的是“高效”很重要 – tom 2010-10-29 12:26:54

+1

这些标识符来自哪里?请注意,对于化合物,已经有很好的方法来存储标识符和指纹,并有效地查询大量数据。不要重新发明轮子,不要使用自己的任意标识符模式。使用一些从数十年的研究和优化中受益的既定方法。 – 2010-10-29 12:40:57

+0

我为一家制药公司工作 – tom 2010-10-29 12:52:51

回答

2

考虑这些事实:

1)两个分子可具有相同的结构的标识符,引起例如通过立体几何或,比较两个复杂的分子(特别是与许多基苯环)

2)考虑http://en.wikipedia.org/wiki/International_Chemical_Identifier。它定义了分子结构的明确版本,您可以从中提取结构公式。例如:

1/C2H6O/c1-2-3/h3H,2H2,1H3 

是代表

CH3CH2OH (ethanol) 

3)您可以检查MQL分子查询语言

4)对自己的实施可能需要大量的时间。还有一些上下文无关文法,但他们都非常复杂,试图找到一些免费的分子查询

0

转换公式为String,然后使用正则表达式匹配,它会让你的生活更轻松,你将学习正则表达式,这是相当得心应手的东西。

0

如果你想这样做的专业,创建一个语法文件,并生成使用ANTLR解析器。