行长度和多行输入的正则表达式

时间:2010-02-22 09:13:32

标签: regex multiline

我试图创建一个正则表达式,如果输入文本有最多3行文本,每行最多10个字符,并且字符全部为大写,则匹配。 因此,此字符串应匹配:"AA\n\nAA"

但这不应该 "A12c"

我认为这样可行:(我在Pattern中启用了多行)

(^[A-Z]{0,10}$){0,3}

但事实并非如此,只有在文字突然出现时才会匹配。

我无法理解表达式有什么问题 - 是不是{0,3}量词应用了correclty?

1 个答案:

答案 0 :(得分:5)

您忘记了与行终结符匹配:

(^[A-Z]{0,10}$\r?\n?){0,3}

应该有效,假设^$匹配开始/结束而不是开始/结束字符串的选项已设置。

如果您的字符串中有超过3行,则需要正则表达式失败,您可以强制使用正则表达式引擎匹配整个字符串,或者根据\A和{{1}将其包围起来}锚点:

\z

但是,并非所有正则表达式都支持这些字符串开头/字符串结尾锚点。