RegEx用于在开头和结尾处将短语与大写单词匹配

时间:2012-12-19 05:33:24

标签: regex

" 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]之间尝试了一些选项,但是没有用。

1 个答案:

答案 0 :(得分:3)

实际上给定的模式似乎匹配:

  1. 3个或更多大写字符,然后
  2. 1个或多个小写字符(或逗号或空格),然后
  3. 一个或多个大写字符
  4. 您可能想要这种模式:

    \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