我在 ruby 中有这样的正则表达式
%r{
(ST)
([A-Z]) ?
(#{A_VAL})
-?
(T)?
}x
现在,我不希望我的正则表达式接受任何以“-”结尾的字符串。所以,例如它应该接受
1)“STCA1-T”
2)“STCA1T”
但它不应该接受“STCA1-”
最佳答案
您可以使用
/\AST[A-Z]?(#{A_VAL})(?:-?T)?\z/
详细信息
\A
- 字符串开头ST
-ST
子字符串[A-Z]?
- 可选的 ASCII 字母(#{A_VAL})
- 第 1 组(如果只有一个替代项,只有一个字符串,并且稍后不需要该值,则可以省略捕获括号):一种模式在A_VAL
变量内(?:-?T)?
- 可选的非捕获组,与可选的-
和强制的T
匹配(即它匹配-T
或T
1 次或 0 次)\z
- 字符串结尾。
关于regex - 如何在 ruby 的正则表达式中对特殊字符和字母进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57850854/