首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RegEx除五旬节RegEx评估步骤外,在任何地方都有效。

RegEx除五旬节RegEx评估步骤外,在任何地方都有效。
EN

Stack Overflow用户
提问于 2019-05-07 14:05:52
回答 1查看 3.1K关注 0票数 0

我有几个RegEx在在线regex网站上工作,但没有在五旬节。你能帮忙吗?

这是一根绳子:

代码语言:javascript
复制
: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

我想捕捉两组人。第一个组将提取所有提交SHA1,而另一个组将提取文件名。

以下是我尝试过的表达方式:

代码语言:javascript
复制
(?:^:([A-Za-z0-9]+):|(?!^)\G)\n+([A-Za-z/.-]+)

https://regex101.com/r/3IBkPz/1

代码语言:javascript
复制
^:(\w+):\s+((?:\s*(?!:)[^\s]+)+)

https://regex101.com/r/oIoDvM/1

有什么想法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-08 15:01:56

Regex Evaluation步骤不支持regex 'g‘修饰符,您的正则表达式模式必须覆盖所有文本才能匹配。

例如:以下模式与Regex计算步骤中的任何内容不匹配:

代码语言:javascript
复制
:([0-9a-f]+):\s+([^:]+) 

但是,如果我将.*放在此模式的前面,并选择“启用dotall模式”:

代码语言:javascript
复制
.*:([0-9a-f]+):\s+([^:]+)

它将匹配最后一次提交(sha1+文件名)。您可以尝试将.*移动到原始模式的末尾,这将为您提供第一个提交。因此,如果您想使用g修饰符检索提交的完整列表(+文件名),那么这个步骤可能不是您的解决方案。

由于字段基本上是由冒号'‘和新行分隔的,您可能可以尝试以下方法:

  1. 使用拆分字段对行进行步骤,分隔符=‘:’并在输出中包括行,此行可以用于筛选偶数为sha1而奇数为文件名的行
  2. 使用分析查询步骤创建一个新字段,并使用LEAD = 1,因此现在可以在同一行中获得sha1和文件名
  3. 使用计算器Fileter步骤计算行/2的剩馀数,并保留行数为奇数的行
  4. 使用拆分字段对行再次使用“\n”将filenames拆分为filename (分隔符是正则表达式)。您可能需要筛选空文件名,因为分隔符只支持一个char
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56024460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档