【问题标题】:How to validate an alphanumeric string with underscore in plsql if loop using regexep_like?如何使用regexep_like在plsql中验证带有下划线的字母数字字符串?
【发布时间】:2017-10-03 14:08:46
【问题描述】:

我的输入文件名应该总是这样:AB_DataLoad_any number of character without space_any numeric value.csv

如何在 pl sql 的 if 循环中验证这一点?

我的天真尝试是这样的:

regexp_like('AB_Dataload_xYzsdf_36.csv','^AB_Dataload_[A-Z][a-z]+_[2-9]+')

【问题讨论】:

  • 您的模式应该类似于'^AB_Dataload_[^ ]+_[0-9]+[.]csv$'
  • @DmitryEgorov:是的,或者[.]csv,更新了上面的评论。 Shouvik,您所说的“在 pl sql 的 if 循环中验证这个”是什么意思?
  • IF(输入文件名有效) THEN do something ELSE return
  • 请通过发布答案来回答问题。评论是为了要求澄清。
  • 我没有答案。但我不希望这个问题没有得到解决/被放弃,因为评论解决了这个问题。 ...恕我直言,我知道你很好。

标签: sql regex oracle plsql


【解决方案1】:

由于您只需要一个正则表达式修复,这里有一个:

'^AB_Dataload_[^ ]+_[0-9]+[.]csv$'

问题出在您的正则表达式的 [A-Z][a-z]+_[2-9]+ 部分:它匹配一个大写字母 ([A-Z]),后跟至少 1 个小写字母 ([a-z]+),而 [2-9]+ 仅匹配来自2-9 范围(不允许使用 01)。

  • ^ - 字符串的开头
  • AB_Dataload_ - 文字 AB_Dataload_ 字符串
  • [^ ]+ - 除空格以外的零个或多个字符(您也可以使用 \S+ 匹配任何 1+ 个非空白字符)
  • _ - 下划线
  • [0-9]+ - 1 位以上
  • [.] - 文字点(或 \. 可以使用)
  • csv - csv
  • 处的子字符串
  • $ - 字符串结束

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-22
    • 2018-11-25
    • 2010-09-10
    • 2010-11-16
    • 1970-01-01
    • 1970-01-01
    • 2013-06-03
    • 2012-05-03
    相关资源
    最近更新 更多