【问题标题】:RegEx match if present正则表达式匹配(如果存在)
【发布时间】:2011-10-08 12:19:45
【问题描述】:

只有当它存在时,正则表达式中是否有一些东西(有条件地)匹配?

例如

字符串可能

question_1

或只有

question

如果是前者,它应该匹配最后的整数,但对于后者,它应该离开它。

【问题讨论】:

  • “离开它”是什么意思?无论末尾是否有下划线和数字,您都想匹配任一字符串吗?
  • 这个问题表示对正则表达式的了解为零。甚至不是零。空值。所以不是教程。当你在这里发帖时,你至少应该知道你所询问的论点的基本知识。
  • 你是想说,如果有下划线,后面一定要跟一个数字,否则最后应该没有下划线?

标签: regex


【解决方案1】:

? 是正则表达式中的 0-1 量词。 \d? 表示 0 或 1 位数字。 * 是 0 无限量词。 \d* 表示 0 位或更多位。是你想要的吗? (另外,+ 是 1 个或多个量词,而不是量词正好是 1)

要详细说明你的问题,我会说

question(_\d+)?

question 后跟一个可选的(_ AND 1 个或多个数字)

括号仅用于对子表达式进行分组(它们是“数学”括号)

【讨论】:

    【解决方案2】:

    如果要提取号码
    question(?:_?)(\d)?

    【讨论】:

      【解决方案3】:

      不太明白这个问题。你只是想提取数字吗?

      question_(\d+)
      

      【讨论】:

        【解决方案4】:

        在 perl 中你可以这样做:

        my $string = 'question_1';
        my $question_number = $string =~ /question_(\d+)/i;
        

        现在 $question_number 将保存 int 如果它匹配,将是 undef 如果它不匹配

        【讨论】:

          【解决方案5】:

          如果下划线和数字是可选的,请尝试以下操作:

          question(?:_\d)?

          【讨论】:

          • 他试图说,如果有下划线,那么应该存在一个数字。否则,只有“问题”没有结尾_
          猜你喜欢
          • 2022-12-11
          • 2015-07-06
          • 2011-10-09
          • 2016-11-10
          • 1970-01-01
          • 2021-11-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多