作为验证方法的一部分,我需要确保输入字符串(称为“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'),从而停止脚本。
问题是上面的正则表达式也匹配管道 |
。这是一个问题,因为输入通常会包含管道。
例如
当 motif = "RR|H..R"
时,脚本停止,因为正则表达式匹配管道。
我曾尝试使用 \
转义管道,但这不起作用...
任何帮助将不胜感激。
注意:这是 ruby 脚本的一部分。
你应该使用:
motif.match(/[bjouxz]/)
因为在字符类管道内部按字面意思处理,即文字 |
而不是正则表达式 OR。
以下也将起作用(管道被视为正则表达式或):
motif.match(/(b|j|o|u|x|z)/)
但是在这里使用字符类会更好/更干净。
我是一名优秀的程序员,十分优秀!