Ruby 包含';或';管道匹配输入字符串中的管道
作为验证方法的一部分,我需要确保输入字符串(称为“motif”)不包含某些字符(b、j、o、u、x、z) 这是我目前正在使用的:Ruby 包含';或';管道匹配输入字符串中的管道,ruby,regex,Ruby,Regex,作为验证方法的一部分,我需要确保输入字符串(称为“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 characte
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
如上面的脚本所示,如果motif包含这些字符,则会运行一个方法('dead'),从而停止脚本
问题是上面的正则表达式也与管道|
匹配。这是一个问题,因为输入通常包含管道
e、 g
当调用motif=“RR | H..R”时,脚本将停止,因为正则表达式与管道匹配
我曾尝试使用\
来转义管道,但这不起作用
任何帮助都将不胜感激
注意:这是ruby脚本的一部分。您应该使用:
motif.match(/[bjouxz]/)
因为字符类管道内部是按字面意义处理的,即文字|
而不是正则表达式或。
以下内容也适用(管道被视为正则表达式或正则表达式):
但是在这里使用字符类更好/更干净。您也可以使用缩写来表示
匹配
motif[/[bjouxz]/]
请自便:在第二个示例中,正则表达式中不需要括号。@sawa:在第二个示例中,这是正确的,实际上不需要括号。Ismail M注意:您的混合语法违背了字符类
[]
表示法的目的/[abc]/
是/a | b | c/
的缩写。如果您使用的是[]
,那么就不应该使用|
。我认为正则表达式也应该不区分大小写。
motif[/[bjouxz]/]