1

作为验证方法的一部分,我需要确保输入字符串(称为“motif”)不包含某些字符(b、j、o、u、x、z)。

这是我目前正在使用的:

    if motif.match(/[b|j|o|u|x|z]/) #check whether the motif contains only amino acid residues and not other junk.
        dead("The motif query must only contain the following characters "ACDEFGHIKLMNPQRSTVWY").)
    end

如上面的脚本所示,如果主题包含这些字符,则会运行一个方法('dead'),从而停止脚本。

问题是上面的正则表达式也匹配 pipeline |。这是一个问题,因为输入通常会包含管道。

例如

当 时motif = "RR|H..R",脚本停止,因为正则表达式与管道匹配。

我试过用 a 逃离管道,\但这不起作用......

非常感激任何的帮助。

注意:这是 ruby​​ 脚本的一部分。

4

2 回答 2

3

You should use:

motif.match(/[bjouxz]/)

Since inside the character class pipe is treated literally i.e. a literal | not a regex OR.

Following will also work (where pipe is treated as regex OR):

motif.match(/(b|j|o|u|x|z)/)

but its better/cleaner to use character class here.

于 2013-09-30T12:15:52.057 回答
0

您也可以使用简写match

motif[/[bjouxz]/]
于 2013-09-30T12:34:15.413 回答