我有以下正则表达式:
import re
identifiers = "[a-zA-Z][a-zA-Z0-9]*"
address = "\\$" + identifiers + "(\\." + identifiers + ")"*
s = re.findall(pattern, "hello\nworld\n$myworld\nrandom!!(+")
结果我得到了:
[('hello', ''), ('', ''), ('world', ''), ('', ''), ('$myworld', ''), ('', ''), ('random', ''), ('', ''), ('', ''), ('', ''), ('', ''), ('', '')]
如何编写与标识符或地址不匹配的正则表达式?假设我可以在模式中将越来越多的正则表达式组合在一起,即:
pattern = address |标识符|字符串|评论| ...
怎么说〜模式?通过这样做,我可以发出一条消息,说明以下字符不被理解:" !!(+"(忽略空格)
答案 0 :(得分:1)
我不确定它是否能满足您的需求,但您可以通过无效替换有效模式来获取其他角色。
>>> import re
>>> identifiers = "[a-zA-Z][a-zA-Z0-9]*"
>>> invalid = re.sub(identifiers, "", "hello\nworld\n$myworld\nrandom!!(+")
>>> print invalid
'\n\n$\n!!(+'
答案 1 :(得分:0)
我对标识符模式做了一些小改动,这可能会解决你的期望,我想
identifiers = "[^a-zA-Z][^a-zA-Z0-9]*"
invalid = re.findall(identifiers, "hello\nworld\n$myworld\nrandom!!(+")
invalid = "".join(invalid)
输出 无效:' \ n \ n $ \ n !!(+'