要求如下:
1.First three characters must not be "CP ","C P". Note there is a space in both these words
2.First character may be alphanumeric, including À, Â, Ç, È
3.2nd and 3rd caracter can be any ascii character other than (0-31)
我遇到问题的部分是如何在字符串不以" CP"开头的地方写正则表达式?单词或" C P"那个词。请注意,ASCII 32是空格字符,在正则表达式匹配中有效但不能与" CP"结合使用。
我尝试过像这样的起点,但无济于事
(?!CP )[^\x00-\x1F]
无效文字:CP 420,C P 420
有效文字:abc 420,420 CP等。
答案 0 :(得分:1)
您需要一个起始锚点,您需要将可选空白添加到负前瞻中。列出您想要的字符比列出您不想要的字符更容易,因为它是2个不同的范围。尝试:
^(?!(?:C ?P|CP ?))[A-Za-z\dÀÂÇÈ][\x20-\xFF]{1,2}
答案 1 :(得分:0)
我尝试了一些REGEX表达式,并且达到了这个目的。
__new__
这将产生以下结果
^((?!cp )(?!c p))(.)*$
不确定这是否是您需要的。如果没有,请提供更多示例,我会深入挖掘。
修改1 : 根据精炼的要求,尝试这是否有效。
acp -> Matched
cpa -> Matched
fsdgsfdgsfd -> Matched
c psadsadsadsa -> Not Matched
cpasdsa -> Matched
ac pasdsadsa -> Matched
cp sadfsdfsdf -> Not Matched
Ècp sadfsdfsdf -> Matched