regex - 正则表达式匹配换行符后的所有内容
问题描述
我正在尝试编写一个正则表达式来匹配提交哈希和与该哈希关联的文件。请参阅下面的示例文件:
:6585d0f0ba88767ac3b590f719596d864d73e9c1:
harmonicbalance/src/harmonicbalance/HarmonicBalanceFlowModel.cpp
harmonicbalance/src/harmonicbalance/HbFlutterModel.cpp
:8302994b565553c83a048b8905ae597349d99627:
emp/src/emp/PhasePairSingleParticleReynoldsNumber.h
emp/src/emp/TomiyamaDragCoefficientMethod.cpp
:9da194f17ec08bb20ad1be8df68b78ca137ab18a:
combustion/src/combustion/ReactingSpeciesTransportBasedModel.cpp
combustion/src/complexchemistry/TurbulentFlameClosure.cpp
:6a59f0be1e347a65e525e58742bb304639ea9bc4:
meshing/src/meshing/SurfaceMeshManipulation.cpp
physics/src/discretization/FvIndirectRegionInterfaceManager.cpp
physics/src/discretization/FvIndirectRegionInterfaceManager.h
physics/src/discretization/FvRepresentation.cpp
physics/src/discretization/FvRepresentation.h
:64b7f6d36b11b6cd94c20cad53463b7deef8c85a:
resourceclient/src/resourceclient/ResourcePool.cpp
resourceclient/src/resourceclient/ResourcePool.h
resourceclient/src/resourceclient/RestClient.cpp
resourceclient/src/resourceclient/RestClient.h
resourceclient/src/resourceclient/test/ResourcePoolTest.cpp
这是我想出的正则表达式:
^:([A-Za-z0-9]+):[\n]+([A-Za-z]+\/.*[.a-z])$
此表达式捕获提交哈希和第一个文件。
如何捕获所有文件和所有提交?
解决方案
您可以使用这个符合 Java 的正则表达式\G
:
(?:^:([A-Za-z0-9]+):|(?!^)\G)\n+([A-Za-z/.-]+)
\G
在前一个匹配的结尾或第一个匹配的字符串的开头断言位置。
推荐阅读
- c++ - 我的向量打印所有元素,但最后一个 c++
- xamarin - Xamarin 表单日期选择器 android
- python - 可以在一行中使用多拆分功能吗?
- php - 无法在 PHP 8.0 中加载 xdebug
- c# - 在 ItemClick() 事件上获取 ListView 项目的详细信息
- json - SpringBoot 中的 Rest 服务需要来自 GET 请求的 JSON 中的嵌套对象
- express - 如果未提供凭据,如何使用 express-basic-auth 以便我的应用程序返回 401?
- docker - Docker容器通信和安全
- reactjs - 我希望某个问题的答案出现在屏幕上以供确认
- javascript - 一次抓取多个结果