regex - 如何在不添加转义字符的情况下让 python 子进程运行正则表达式模式?
问题描述
我正在尝试使用基本的正则表达式模式从 python3 运行定位。
subprocess.run( ['locate', '-r', '\.[^\~]$'] )
但是 subprocess 正在向正则表达式字符串添加转义字符。这似乎导致它破裂。
完成的过程报告它运行了正则表达式字符串:
'\\.[^\\~]$'
如何阻止它转义正则表达式字符串?
解决方案
所以这个问题是无效的。但答案是对不同问题的回答,具有启发性。
这种模式有效
'.*[^~]$'
正如@Wiktor 在他上面的评论中所说,没有必要逃避我一开始就逃脱的字符。
困惑在于基本的 bash 正则表达式有多简单。在这方面,上述模式也不像看起来那样。
.* 并不意味着像往常一样找到所有东西。* 靠它自己意味着找到一切。这 。只匹配一个点。所以 .* 意味着找到带有 . 的东西。其次是任何东西。
更准确地说,我使用的实际模式更像这样:
'abc.*[^~]$'
... 查找名称以 abc 开头的所有文件。并且以任何结尾,而不是〜。
奇怪的是,这似乎不起作用:
'^abc.*[^~]$'
推荐阅读
- node.js - 在 html 中使用 NodeJS 函数
- python - 使用 matplotlib 和 y twinx 打印图例时出错
- java - 在没有模块的情况下访问 JDK 11 中的“sun.security.x509”?
- java - 工厂方法返回 Spring 服务
- python - 彭博数据服务会话无法开始
- yaml - 环境变量是否可以在 Cloud Foundry 清单中保存数组值?
- python - 使用 tweepy 从 Twitter 获取热门话题。有更好的方法吗?
- java - 春季启动映射问题
- python - Python - 列表索引超出范围,“for”循环
- wordpress - Woocommerce 目录页面明星