正则表达式查找字母和特定可选字符

时间:2017-10-05 13:40:20

标签: regex db2

我需要一个正则表达式,匹配至少包含一个字母A-Z的字符串,以及可选的.-¤(点,短划线和“太阳”的任意数字和组合(英语中叫什么? ))。

匹配的字符串将是

A

AB

A-.

¤A

但不是

-.

¤

因为他们没有任何信件。

我的第一次尝试当然是^[A-Z¤-.]*$,但也匹配没有字母的字符串。

[A-Z]+匹配至少包含一个字母的字符串

[¤.-]*匹配其中可能包含¤.-的字符串

我试图通过多种方式将这两者结合起来,但还没有设法解决我的问题。

当我不能指望字母和字符之间的任何特定顺序¤.-并同时排除任何其他字符时,有没有办法将这两个最后一个正则表达式组合在一起?

也许群体或非捕获群体与它有关,但我还没有完全理解它们。

PS我正在使用DB2函数REGEXP_LIKE来实现它。

1 个答案:

答案 0 :(得分:1)

您可以使用

^[A-Z.¤-]*[A-Z][A-Z.¤-]*$

<强>详情

  • ^ - 字符串开头
  • [A-Z.¤-]* - 0+大写字母,.¤-
  • [A-Z] - 大写字母
  • [A-Z.¤-]* - 0+大写字母,.¤-
  • $ - 字符串结束。

了解this regex matches sample strings

的方式