У меня есть пара регулярных выражений, которые работают на веб-сайтах регулярных выражений, но не в Pentaho. Не могли бы вы помочь?
Вот строка:
: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, а другая группа будет извлекать имена файлов.
Ниже приведены выражения, которые я пробовал:
(?:^:([A-Za-z0-9]+):|(?!^)\G)\n+([A-Za-z/.-]+)
https://regex101.com/r/3IBkPz/1
^:(\w+):\s+((?:\s*(?!:)[^\s]+)+)
https://regex101.com/r/oIoDvM/1
Мысли?
Шаг RegEx застревает, когда я использую это ^:(\w+):\s+((?:\s*[^\s:][^\s]*)+)
Насколько я знаю (начиная с PDI-8.0), шаг Regex Evaluation
НЕ поддерживает модификатор регулярного выражения «
Например: следующий шаблон не будет соответствовать чему-либо на шаге Оценка регулярных выражений:
:([0-9a-f]+):\s+([^:]+)
но если я добавлю .*
к этому шаблону и выберу "Включить точечный режим":
.*:([0-9a-f]+):\s+([^:]+)
он будет соответствовать последней фиксации (sha1 + имена файлов). Вы можете попробовать переместить .*
в конец
исходный шаблон, который даст вам первую фиксацию. Итак, если вы хотите восстановить
полный список коммитов (sha1 + имена файлов) с модификатором
Поскольку поля в основном разделены двоеточиями «:» и новые линии, вы, вероятно, можете попробовать следующий подход:
Используйте шаг Разбить поле на строки, разделитель = ':' и включите номер строки в вывод, этот номер строки можно использовать для фильтрации строк, где четное число — это sha1, а нечетное — имена файлов.
Используйте шаг Аналитический запрос, чтобы создать новое поле с LEAD = 1, так что теперь вы можете получить sha1 и имена файлов в одной строке.
Используйте шаги Калькулятор и Филетер для вычисления остатка rownum/2 и сохранения только строк с нечетным числом rownum.
Снова используйте Разделить поля на строки, чтобы разделить filenames
на filename
, используя «\n» (разделитель — это регулярное выражение). вы можете отфильтровать ПУСТОЕ имя файла, так как разделитель поддерживает только один char
возможно, отрицательный прогноз не поддерживается, примечание
(?!:)[^\s]+
может быть изменено на[^\s:][^\s]*