regex - 如何在 ruby​​ 的正则表达式中对特殊字符和字母进行分组?

标签 regex ruby

我在 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 匹配(即它匹配 -TT 1 次或 0 次)
  • \z - 字符串结尾。

关于regex - 如何在 ruby​​ 的正则表达式中对特殊字符和字母进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57850854/

相关文章:

java - 我的正则表达式与某个输入不匹配 - java

regex - Nginx 在匹配之前是否取消引用/转义 URL 字符?

ruby - 范围/线段树 Ruby

ruby - 在 ActiveRecord 测试装置中配置 fixture_path

ruby-on-rails - 我如何优化这个关联链?

ruby - 递归地深入 Nokogiri 树

Android - 电子邮件验证

javascript - 用正则表达式结果的修改版本替换正则表达式

java - 在JAVA中使用正则表达式替换重复的字母

ruby-on-rails - 带有 WARN 的 jekyll -v:Gem::Specification.reset 期间 Unresolved 规范: