我需要一个RegEx来匹配以冒号结尾的大写字符串。该字符串可以包含空格,数字和句点。所以如果:
mystring = "I have a C. GRAY CAT2:"
我想要coldfusion表达式
REFind("[A-Z0-9. ][:]",mystring)
返回数字9,匹配“C. GREY CAT2:”。相反,它返回数字21,仅匹配冒号。我希望修正正则表达式可以解决问题。当然,我尝试过很多很多东西。 谢谢!
答案 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 suggestion(demo)。< / p>
答案 1 :(得分:0)
已将所选答案修改为我自己的问题以涵盖德语特殊字符。
[A-Z][A-Z0-9.ÜÄÖß ]*:
这似乎有效,但是德国人最近在他们的字母表中增加了一个首都ß,这肯定不会出现在大多数键盘上,因此对RegEx来说不会有问题。