正则表达式请求

你好 我创建了一个脚本来询问用户的输入,该输入可以是模式 现在,我使用RE来编译该模式 pat = re.compile(r"%s"%(userInput))#userInput从 命令行参数 如果用户键在模式中,例如[ - ],我的脚本将搜索一些 包含[ - ]的行 pat.findall(线) 但是脚本会产生一些错误:sre_constants.error:意外结束 正则表达 我如何成功地捕获诸如" [ - ]"之类的模式 汇编的输入未知...? 谢谢

# 回答1

mi hotmail.com写道: 如果您想要的是验证输入是有效的REGEXP,则只是 尝试编译它. 在您的情况下(CLI参数),您无能为力 如果ARG不是有效的REGEXP,请执行此操作,除了将消息打印到STDERR 和具有非零值的sys.exit(). - - Bruno Desthuilliers python -c" print'@'.join(['.'.join([w [::-1] for p.split('.'.')]) p in'O ****@xiludom.gro'.split('@')))(_@@_)mi@_)mihothdeydeyder@hotmail.com写道: 也许你想要 pat = re.compile(re.escape(userInput)) 肯特
# 回答2

mihothyde***@hotmail.com写道: 为什么模式? " [ - ]"是一个有效的正则表达式(它匹配 单个负),例如 "[-" 是无效的. 为了解决这个问题,请抓住 例外: 尝试: pat = re.compile(userInput) 除了Re.Error: 打印"无效的正则表达式:",UserInput sys.exit() 希望这可以帮助!
# 回答3

弗雷德里克·伦德(Fredrik Lundh)写道:r"%s"%(用户input)是一个毫无意义的操作:" r"前缀控制着字符串中的后斜线如何解析; 结果是普通字符串(在这种情况下为"%s"). 换句话说,pat = re.compile(r"%s"%(userInput))只是一种稍微令人费解的写入pat = re.compile(str(userInput))的方法,并且由于您知道UserInput是字符串(在 至少,如果您从sys.argv获得它),您还可以编写pat = re.compile(用户input)的模式? " [ - ]"是一个有效的正则表达式(它匹配单个负),例如 "[-" 是无效的. 为了解决这个问题,请捕获例外:尝试:pat = re.compile(用户input)除re.error:打印"无效的正则表达式:",userInput sys.exit()希望这会有所帮助! 你好. 感谢您的帮助. 实际上,我正在执行一个应用程序,允许用户删除文件 输入输入模式. 因此,如果他有特殊的文件 [ - ]或其他人之类的字符,然后我想将它们过滤掉.... re.compile(re.escape(userInput))的解决方案可能有效,我必须 试试看. 再次感谢.
# 回答4

mihothydeyder@hotmail.com写道: re.eScape(userInput)创建一个RE模式,该模式修补了UserInput 确切地. 如果那是您想要的,则无需常规 完全表达; 只需使用" In"运算符: 如果文件名中的UserInput: 用文件做某事
# 回答5

2006年6月9日17:44:42 -0700,mihothdeydey@hotmail.com 写道: 如果您想匹配文件名,您可能想看看 在FNMatch和Glob模块 es. 他们支持的模式是 不如正则策略强大和灵活,但要简单得多,并且 专门设计的,考虑一下文件名匹配. - - 干杯, Simon B,sibenyonline.net,http://www.brunningonline.net/simon/blog/(_@_ _)

标签: python

添加新评论