python - python - 正则表达式仅适用于单个单词
问题描述
我正在尝试在另一个文件(日志文件)中搜索和捕获某种类型的文件名(例如/app.css
/main.js
)。
我构建的正则表达式是这样的:
^\/([a-zA-Z0-9_-]+)[.](css|js)
我正在尝试获取第一个捕获组,即没有扩展名的文件名(app
main
上面示例中的等),这就是我搜索的方式
haystack = '/main.js'
matches = re.finditer(pattern, haystack, re.MULTILINE)
它工作正常,我能够获得捕获的组。但是,如果我在读取文件时做同样的事情,它就不起作用
pattern = r"'^\/([a-zA-Z0-9_-]+)[.](css|js)'"
for i, line in enumerate(open('log.txt', 'r')):
haystack = line.rstrip()
matches = re.finditer(pattern, haystack, re.MULTILINE)
的内容log.txt
是这样的:
duis ut diam quam /app.css porttitor
app.css
main.js
purus sit (amet volutpat /main.js)
它在上述文件的任何行中都不匹配,即使它应该在所有四行中都有!
解决方案
将您的正则表达式更改为:
/([a-zA-Z0-9_-]+)\.(css|js)
演示:https ://regex101.com/r/Aub4dw/1/
您不需要线锚的开头。它适用于haystack = '/main.js'
因为/main.js
正好在字符串的开头。
推荐阅读
- python - Flask-Bootstrap 对更改没有响应
- javascript - 如何在香草 javascript 中设置 -webkit-text-fill-color
- airflow - 将气流连接到谷歌融合
- sympy - 使用 sympy 使用条件语句对函数进行 Lambda 化
- graphql - GraphQL 参数类型从何而来?
- swiftui - SwiftUI:如何强制 HStack 中的特定视图位于中心
- android - 在启用 VNDK 的情况下构建供应商模块时使用 NDK 标头
- c++ - 通过非常量引用参数修改 const 引用参数
- javascript - 当滑块值低于 64 时,圆形滑块保持像素剩余
- reactjs - React - 隐藏和显示单个元素