【问题标题】:A protein-coded gene Regular Expression蛋白质编码基因正则表达式
【发布时间】:2018-02-03 14:47:59
【问题描述】:

我正在尝试编写一个可以匹配以下说明的正则表达式 带有“AT”前缀的字符序列,后跟“nG”,其中 n 是从 1 到 5 的数字,然后是“G”,最后是 5 位数字的后缀。

注意:只是普通的正则表达式,与语言无关。

匹配字符串的示例如下:“AT1G01040”

这是我可以构造的AT[1-5]G(d\{1,5}),但我不确定它是否是正确的答案。

拜托,我需要你的帮助。

【问题讨论】:

  • 后跟 5 位数字的后缀 - 您的意思是准确还是最多?如果确实如此,您需要\d{5},而不是1,5
  • 一些正则表达式引擎不支持\d,或者默认匹配Unicode数字,因此,我建议坚持[0-9]字符类/括号表达式。
  • AT[1-5]G(d\{1,5}) ??你不是说AT[1-5]G(\d{1,5}) \d 代表数字吗 - 我假设这是一个错字:)

标签: regex parsing compilation nsregularexpression


【解决方案1】:

如果末尾的位数可能是 1 到 5,则可以使用

^AT[1-5]G[0-9]{1,5}$

请参阅regex demo

注意,如果末尾的位数必须正好是5,则必须去掉1,

^AT[1-5]G[0-9]{5}$

详情

  • ^ - 字符串开头
  • AT - 一系列字符 AT
  • [1-5] - 1, 2, 3, 45
  • G - 一个 G 字符
  • [0-9]{1,5} - 任何 1 到 5 次连续出现的 ASCII 数字(或者 - 如果您使用 {5} - 恰好出现 5 次)
  • $ - 字符串结束。

【讨论】:

  • 嘿,Wiktor 非常感谢我的指导,我认为这是我的正确答案。 ^AT[1-5]G[0-9]{1,5}$
  • 如果不是题外话,您能否帮我提供一个可以识别这些字符串的非确定性有限自动机 (NFA)?
  • 什么意思?上面的表达式将验证符合您要求的字符串。如果您需要从较长的文本中提取它们,您应该将 ^$ 替换为单词边界,在大多数语言中,\b
猜你喜欢
  • 2013-01-16
  • 1970-01-01
  • 2021-02-16
  • 2020-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多