" UPPERCASEWORD UPPERCASEWORD lowercaseword UPPERCASEWORD UPPERCASEWORD"
以下RegEx与上述模式匹配良好,但如果中间有数字则无法匹配。 \ B [A-Z] [A-Z] [A-Z] +(?:[\ SA-Z,] + [A-Z] +)* \ B'/ P>
" UPPERCASEWORD UPPERCASEWORD小写字母1(或任何数字)UPPERCASEWORD UPPERCASEWORD"不符合
知道如何在比赛中加入数字吗?我在[0-9]之间尝试了一些选项,但是没有用。
答案 0 :(得分:3)
实际上给定的模式似乎匹配:
您可能想要这种模式:
\b[A-Z][A-Z][A-Z]+(?:[\sa-z,]+[0-9]*[A-Z]+)*\b
相当于:
\b[A-Z]{3,}(?:[\sa-z,]+[0-9]*[A-Z]+)*\b
或者,如果你想在小写字母之前只允许2个(或可能更多)大写字符,那么这个:
\b[A-Z]{2,}(?:[\sa-z,]+[0-9]*[A-Z]+)*\b
如果您发布了一些测试数据会有所帮助。
更新:听起来你想要的东西与你最初描述的完全不同。会这样做,还是会匹配太多?
\b[A-Z]{2}.*[A-Z]{2}\b
如果匹配太多,那么如果你的工具支持负面预测,那么这可能会有效,但它会变得非常混乱:
\b[A-Z]{2}((?!\b[a-z][a-z'0-9]+\b\s[a-z][a-z'0-9]+).)*[A-Z]{2}\b