gpt4 book ai didi

c# - 如何使用正则表达式将前面没有特殊字符的两个大写字母匹配在一起?

转载 作者:太空狗 更新时间:2023-10-29 23:29:45 24 4
gpt4 key购买 nike

我最近阅读了很多关于正则表达式的非常有趣的东西。特别是关于creating your own regex boundaries

有一件事我认为我没有看到完成(我 100% 已经完成,但我没有注意到任何例子)是如何排除一个正则表达式匹配,如果它前面有一个“特殊”字符',例如 & ! % $ #。例如:

如果我使用正则表达式(注意这是来自 C#)

([A-Z]{2,}\\b)

它将匹配任何长度为两个或两个以上的大写字母,并使用 \b 边界来确保两个大写字母不以任何其他字母开头或结尾。但这里是我不确定它会如何表现的地方:

AA -匹配

sAB -不匹配

AC -不匹配

!AD -匹配

AF! -匹配

我想知道如何只选择前面没有小写字母/数字/符号或后面没有小写字母/数字/特殊字符的两个或多个大写字母。

我见过人们使用空格,因此请确保字符串以空格开头或结尾,但如果它位于一行的开头或结尾,那将不起作用。

所以,我从上面的例子中寻找的输出是:

AA -匹配

sAB -不匹配

AC -不匹配

!AD -不匹配

AF! -不匹配

感谢任何帮助。

最佳答案

你只需要使用后视和前视:

(?<![a-z\d!@#$%^&*()])[A-Z]{2,}(?![a-z\d!@#$%^&*()])

参见 regex demo

(?<![a-z\d!@#$%^&*()]) lookbehind 确保没有小写字母 ( [a-z] )、数字 ( \d ) 或您定义的特殊字符。如果有,则匹配失败,不返回任何内容。

(?![a-z\d!@#$%^&*()])如果在 ALLCAPS 字母后发现相同的字符,先行也会失败。

查看更多详情 Lookahead and Lookbehind Zero-Length Assertions here .

关于c# - 如何使用正则表达式将前面没有特殊字符的两个大写字母匹配在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34518271/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com