求助:编写Oracle REGEXP_LIKE正则表达式匹配特定格式字符串
Oracle REGEXP_LIKE 正则表达式解决方案
直接给出满足所有规则的正则表达式,搭配详细解析:
REGEXP_LIKE(your_column, '^((P|C)|\(P\)|\(C\)|©)\s(19|20)\d{2}\s.*')
各部分拆解说明:
^:锚定字符串开头,确保匹配从文本最起始位置生效((P|C)|\(P\)|\(C\)|©):覆盖所有合法开头:P|C:匹配单个大写字母P或C\(P\)|\(C\):匹配带括号的(P)或(C),括号是正则特殊字符,必须用\转义才能匹配实际的括号符号©:直接匹配版权符号
\s:匹配单个空格(严格遵循规则里的“后跟一个空格”要求,如果允许多个空格,可替换为\s+)(19|20)\d{2}:匹配合法年份:19|20:限定年份前两位为19或20\d{2}:匹配任意两位数字,保证年份是完整的4位数
\s:再次匹配单个空格.*:匹配后续任意长度的任意文本(如果要求后续必须有内容,可替换为.+)
匹配验证:
- 符合要求的匹配项:
(P) 2004 XYZ Company、P 2018 This is some random text、(C) 1994 More Random Text - 不符合的排除项:
(P) XYZ Company(缺少合法年份)、P1976,Just Wow(P与年份间无空格)、(C) 1856 Too Late For Gold(年份前两位不是19/20)
内容的提问来源于stack exchange,提问作者Todd
相关产品推荐
相关产品推荐

