正则表达式 - 匹配与字母字符子集不匹配的字母字符(C#)

时间:2010-01-27 02:12:36

标签: c# regex

说我有一系列字符串“123AB”,“456CDEF”,“789G”,“012-HI”。如何找到所有字符串(1或更多)后跟alpha(1或更多)没有特殊字符,其中字母字符不是 AB

为了澄清,应用于前一个集合的正则表达式应该产生“456CDEF”和“789G”。忽略“123AB”,因为alpha值为 AB ,并且忽略“012-HI”,因为它包含非alpha。我正在寻找的正则表达式减去特殊的 AB 规则,是^[0-9]+[A-Z]+$。案件是无关紧要的。我尝试了[^ ]规则的一些变体但没有成功,因为我提出的所有模式都允许使用特殊字符。

为了概括,我如何使用单个正则表达式模式匹配一​​组与某个alpha值子集不匹配的alpha值?

注意:也应接受“123ABC”。只应忽略 AB 的字符串。

3 个答案:

答案 0 :(得分:2)

你想要一个先行断言:^[0-9]+(?!AB$)[A-Z]+$

答案 1 :(得分:0)

没有预见:

  

^ [0-9] +([B-Z] | A [AC-Z])[A-Z] * $

修改
撤回,因为这与123A之类的东西不匹配。但我会把答案看作是一个不起作用的例子。

答案 2 :(得分:0)

^\d+(?:a(?:b[a-z]+|[^b][a-z]*)?|[^a][a-z]*)$
字符串的开头,然后是1位或更多位数,然后是(A)a后跟b后跟更多字母,或者(B)a后跟除b之外的任何字母以及之后的任何字母,或者(C)任何其他字母比后跟任何字母,然后结束字符串