Python 3.x Python Regx排除字母数字字符串中的某些字母
如何使用正则表达式匹配只能包含17个字母数字字符且不包含字母“q”、“o”和“i”的字符串。 又名,只有字母和数字,而不是“q”、“o”和“i” 在python中可以分别完成两个条件:Python 3.x Python Regx排除字母数字字符串中的某些字母,python-3.x,Python 3.x,如何使用正则表达式匹配只能包含17个字母数字字符且不包含字母“q”、“o”和“i”的字符串。 又名,只有字母和数字,而不是“q”、“o”和“i” 在python中可以分别完成两个条件: [a-z0-9]{17} [^qoi] 因此,除了指定有效字符间隔或使用AND将两个条件组合在一起外,python中是否有更优雅的方法可以指定要包含的字符,同时排除不希望包含的字符 [a-z0-9&&[^qoi]]Java语言 (例如,我想排除10个随机字母,指定每个间隔将非常繁琐。[a-bd-eh-ow-…]
[a-z0-9&&[^qoi]]
Java语言
(例如,我想排除10个随机字母,指定每个间隔将非常繁琐。[a-bd-eh-ow-…]
如果没有这种方法,我只能接受python正则表达式的现实
谢谢你的帮助!
Erik这里有两个选项:
分别检查每个条件
使用两个正则表达式并确保它们都匹配
import re
test_case = "asdFghijalkdjflkjsd"
re.match("^[A-Za-z0-9]{17}$", test_case) and re.match("^[^qoi]+$", test_case)
明确列出哪些是合法的
列出所有法定字母数字字符,不包括q、i和o
import re
test_case ="12345a78901234567"
re.match("^[ABCDEFGHJKLMNPRSTUVWXYZabcdefghjklmnprstuvwxyz0-9]{17}$", test_case)
当然,这可以使用范围进行压缩,例如
A-HJ-NPR-Z
,等等。您可以将任何需要的内容放在方括号中。例如,要匹配除q、o和i之外的任何字母,您可以使用:
[0-9abcdefghjklmnprstuvwxyz]
您还可以指定多个范围,这可能会使跳过的字符更加明显:
[0-9a-hj-npr-z]
也许有更优雅的方法可以做到这一点,但基本概念是一样的:只在
[]中放入您想要匹配的字符
@Ken White所以“a”“b”“c”只是一个示例,对于演示,我的意思是,它可以是类中任意数量的字母,因此我正在寻找一种优雅的通用方法,谢谢!那么你能展示一个真实的示例吗?@Ryan我在原始问题中添加了:)它需要是一个正则表达式吗,或者您可以对^[a-z0-9]{17}\Z
进行一次检查,并对[qoi]
进行一次检查(?![^q]*[qoi])^[a-z0-9]{17}\Z享受吗