【发布时间】:2012-09-05 11:44:55
【问题描述】:
好的,接下来: 目标是制作匹配“BLABLA BLA B BLAB”字符串的正则表达式,例如:
^[A-Z](\s?[A-Z])*$
但主要问题是匹配字符串的长度可以是 1 到无穷大之间的任何值。那么是否有可能制作一个行为与上述完全相同的正则表达式,但仅当字符串长度小于或等于 20 个字符时才匹配? (字符串开头和/或结尾处不允许有空格。)
我了解在这种情况下,最好在正则表达式之外更改字符串长度(例如,在我的应用程序的代码中,已经这样做了),但我只是好奇我是否'我错过了一些简单的东西?
编辑:20 个字符是字符串的全长,包括单词之间的可选单个空格。字长可以是 1 个字符或更多。 因此,“AAAAABBBBBDDDDDEEEEE”(20 个大写字母)应该匹配,“AAAAABBBBB CCCCDDDDD”应该匹配(中间有 1 个空格),“AAAA BBBB CCCC DDDDD”应该匹配(中间有 3 个 单个 空格,字符串长度为 20),“AA B”应该匹配(中间有一个空格,总长度
【问题讨论】:
-
在询问正则表达式问题以提供示例输入和预期输出时总是很有帮助的。空格算在 20 个字符中吗?
-
是的,20 个字符是全长,包括单词之间的空格,所以字符串可以只有 20 个字母,或者 19 个字母,除了开头/结尾等地方有一个空格等。抱歉误导。