我最近阅读了很多有关正则表达式的非常有趣的东西。特别是关于创建自己的正则表达式边界
我不认为自己完成了一件事情(我已经100%完成了,但是我还没有注意到任何示例)是如何在以“特殊字符”开头的情况下排除正则表达式匹配项,如 & !%$#。例如:
如果我使用正则表达式(请注意,这是来自C#)
([A-Z]{2,}\\b)
它将匹配任何两个或两个以上长度的大写字母,并使用\b
边界确保两个大写字母不以任何其他字母开头或结尾。但是,在这里我不确定这样做的方式:
AA-匹配
sAB-无匹配
AC-不匹配
!AD-匹配
的!-比赛
我想知道如何只选择两个或多个大写字母,这些大写字母前没有小写字母/数字/符号,也没有后跟小写字母/数字/特殊字符。
我见过人们在使用空格,因此请确保字符串以空格开头或结尾,但是如果它位于行的开头或结尾,则该行将不起作用。
因此,我将从上面的示例中寻找的输出将是:
AA-匹配
sAB-无匹配
AC-不匹配
!AD-没有匹配项
的!-没有比赛
任何帮助表示赞赏。
您只需要使用先行式和后行式:
(?<![a-z\d!@#$%^&*()])[A-Z]{2,}(?![a-z\d!@#$%^&*()])
在(?<![a-z\d!@#$%^&*()])
回顾后确保没有小写字母([a-z]
),数字(\d
),或者你定义的特殊字符。如果有一个,则匹配失败,不返回任何内容。
该(?![a-z\d!@#$%^&*()])
如果相同字符的字母ALLCAPS发现后先行也失败匹配。
在此处查看有关Lookahead和零长度断言的更多详细信息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句