我的Python 3.2中的正则表达式有问题
我想确保一个字符串匹配我的critera,它是一个字母(或数字),然后是一个符号。
answer = bool(re.findall('[A-Z|1-9][^A-Z|1-9]',string))
这可以按预期工作。如果我测试A#
我得到True
,这适用于所有类型的企业。当我执行返回T^
的{{1}}之类的内容时接受。无论插入符号之前是什么字母,都是一样的。这是我的正则表达式的问题还是Python?
答案 0 :(得分:2)
这里的答案有帮助,但没有人在字符类中使用的^
中找到答案,这意味着NOT ANY OF THESE THINGS
,所以[^a]
就是一切,但是字母a。你说'"没有在^之后和最近的未转义之前的事情'"
如上所述......或者事物......角色类是一个大的或者!
[\^a]
匹配^或a。但要小心,通常反斜杠被视为"字母反斜杠"除非它实际上逃脱了某些东西,例如\k
是反斜杠和k,但\n
是换行符,\\n
是反斜杠(字母)n。
"\\\\"
,鉴于反斜杠可以被转义之后的事情(这是REGEX引擎的工作原理),PHP不使用"哦,你不能逃避ak,因此,他必须表示字母反斜杠后跟k",它会丢弃反斜杠。
这么多个小时......只是......太可怕了。
答案 1 :(得分:1)
你的正则表达式有点偏。
[A-Z|1-9]
实际上意味着:
a-z
|
字面意思1-9
之间的任何数字。试试这个:
[A-Z0-9][^A-Z0-9]
但是,你的正则表达式应该在任何情况下匹配T^
......
答案 2 :(得分:0)
尝试一下:
^[A-Za-z|1-9][^A-Za-z|1-9]$
我试图从你的正则表达式中删除区分大小写,这也接受了T ^。 我在http://regexpal.com/
上查了一下这里的第一个^和最后一个$符号是字符串的开头和结尾。
工作演示:Here