import re
pattern = r'^(?=.*[a-z\d])[a-z\d]*N\/A[a-z\d]*$'
# ^ 匹配字符串开头
# (?=.*[a-z\d]) 用于当匹配到N/A时要求字符串中必须包含a-z或0-9
# [a-z\d]* 匹配a-z或0-9任意个数
# \/ 匹配'/'字符,需要转义
# A 匹配'A'字符
# [a-z\d]* 匹配a-z或0-9任意个数
# $ 匹配字符串结尾
string1 = 'abc123N/Axy'
string2 = '123abcN/Ana'
string3 = 'N/A123'
string4 = 'N/A'
print(re.match(pattern, string1)) #
print(re.match(pattern, string2)) # None
print(re.match(pattern, string3)) #
print(re.match(pattern, string4)) #
解释:该正则表达式中(?=.*[a-z\d])
表示匹配N/A时,要求字符串中必须包含a-z或0-9字符,这样可以保证原字符串中只包含N/A和a-z或0-9,且顺序任意。另外注意需要将'/'字符转义。