RegEx查找任何大写单词后跟冒号

时间:2017-09-27 13:39:46

标签: regex coldfusion

我需要一个RegEx来匹配以冒号结尾的大写字符串。该字符串可以包含空格,数字和句点。所以如果:

mystring = "I have a C. GRAY CAT2:"

我想要coldfusion表达式

REFind("[A-Z0-9. ][:]",mystring) 

返回数字9,匹配“C. GREY CAT2:”。相反,它返回数字21,仅匹配冒号。我希望修正正则表达式可以解决问题。当然,我尝试过很多很多东西。 谢谢!

2 个答案:

答案 0 :(得分:2)

我建议使用

[A-Z0-9][A-Z0-9. ]*:

请参阅regex demo

<强>详情

  • [A-Z0-9] - 大写字母或数字(如果第一个字符可以是数字,则删除0-9
  • [A-Z0-9. ]* - 零个或多个大写字母/数字,.或空格
  • : - 冒号。

<强>变体形式

为避免匹配345:类似子字符串但仍然允许23 VAL:类字符串,请使用

\b(?=[0-9. ]*[A-Z])[A-Z0-9][A-Z0-9. ]*:

this regex demo。在这里,\b(?=[0-9. ]*[A-Z])首先匹配单词边界,然后正向前瞻(?=[0-9. ]*[A-Z])确保在0+数字,空格或点之后有一个大写字母。

如果您不希望序列开头的数字,即I have a 22 C. GRAY CAT2:之外的数字,则需要提取C. GRAY CAT2,使用Sebastian's suggestiondemo)。< / p>

答案 1 :(得分:0)

已将所选答案修改为我自己的问题以涵盖德语特殊字符。

[A-Z][A-Z0-9.ÜÄÖß ]*:

这似乎有效,但是德国人最近在他们的字母表中增加了一个首都ß,这肯定不会出现在大多数键盘上,因此对RegEx来说不会有问题。