模式xxxx / xxxxU的正则表达式

时间:2014-07-31 13:03:31

标签: sql regex oracle

我正在寻找一个匹配模式xxxx / xxxxU的正则表达式,其中x可以是0-9,而末尾的“U”是可选的。

有效示例:1111 / 1111,1111 / 1111U 示例无效:1111 / 1111Z,111/1111

我可以到达'[0-9] {4} / [0-9] {4}',但我不知道如何在最后处理可选的“U”。

4 个答案:

答案 0 :(得分:2)

始终匹配数字 - 斜线数字;包括U,如果存在:

[0-9]{4}/[0-9]{4}U?

或者如果用\ d替换数字范围(对于数字字符):

\d{4}/\d{4}U?

?表示零或前一个字符之一。所以U为零或一个。 Test it

整个字符串1111 \ 2222U将匹配,而1111 \ 2222Z的匹配将包括数字斜杠数字部分但不包括Z.

仅在字符串以数字或U:

结尾时匹配

如果以U之外的任何字母结尾的字符串片段根本不匹配,请尝试以下操作:

^\d{4}/\d{4}U?$

如果数字 - 斜杠号码加上可选的U是字符串中唯一的内容(test it)或

,则匹配
\d{4}/\d{4}U?(\s|$)

如果数字斜杠数加上可选的U后跟一个空格字符(包括在匹配中)或字符串的结尾,则匹配。 (Test it。)

(注意:测试链接显示" /"在" \" [例如" /& #34;] - 该实现所需的东西。我不熟悉Oracle的正则表达式语法,因此在该平台上可能不需要这样做。)

答案 1 :(得分:1)

我会用'[0-9] {4} / [0-9] {4} U?'或'[0-9] {4} / [0-9] {4} U {0,1}'

发现于:http://docs.oracle.com/cd/B12037_01/appdev.101/b10795/adfns_re.htm

答案 2 :(得分:1)

你可以尝试这个表达式:

 [0-9]{4}/[0-9]{4}U?

?表示:可选(0或1)。查看this有用的正则表达式概述表。

答案 3 :(得分:0)

感谢您的所有评论,但有些情况您的回答未涵盖。

' ^ [0-9] {4} / [0-9] {4} U $'?

上述所有上述案例均适用