私はさまざまな複雑さの一連のファイル名を持っています。基本的には、[_] {ASSET} _ [OPTIONAL_DESCRIPTION] _v {#####}。{EXT}によって分割されます。 ([]はオプションです)。しかし、その形式の中では、各部分は任意に複雑にすることができます。 (大手_sは任意である)Regexが1つ以上のグループをあまりにも多く一致させています
character_thing_v001.md
character_Description_v001.md
character_Some_Long_Description_v001.md
character_thing_with_additional_info_v001.md
character_thing_with_additional_info_Description_v001.md
character_thing_with_additional_info_More_Description_Info_v001.md
character_with_additional_info_Complete234ly_arbitrary_Description_v001.md
_character_thing_v001.md
___character_Description_v001.md
____character_Some_Long_Description_v001.md
__character_thing_with_additional_info_v001.md
__character_thing_with_additional_info_Description_v001.md
___character_thing_with_additional_info_More_Description_Info_v001.md
は、私は、資産と説明を分離するために先読みアサーションを作り、私の上司は、システム内のレンチを投げたときすべてが、つい最近まではうまくいきました。今では、 "some_undercase"または "CAPS _ ###"という規約を持つアセットをサポートする必要があります。私はA-Zを許可するように変更し、descriptionTextを何かにマッチさせました。それは混乱が始まったところです。
(?:[_]+)?
(?P<assetText>[a-zA-Z0-9]+
(?=_[a-zA-Z0-9]+)? # lookahead and optionally assert _Capital
(?:(?:_[a-zA-Z0-9]+)+)? # match next group if it exists
) # get full match
(?:[_]+)?
\_(?P<descriptionText>.+)?
\_v(?P<versionIncrement>\d+)
\.(?:\.)?
(?P<extension>(?:md|some|other|extension|options))
これは私が道の一部を取得しますが、それは今、資産が資本を持つことができること、先読みが資産のあまり一致し、説明に入る起動し、表示できる問題、here
を持っています。このパターンは自動的に生成されるいくつかのパターンの1つで、私は問題の根本を解決する方法を探しています。ご指導いただければ幸いです。ありがとうございます。
私は明確にし、オリジナルのポストを編集します。資産は常にunder_case(例:character_thing)または(現在)CAPS _ ###(例:DOLL_101)です。説明はCapital_Caseです。だから、単にマッチを得るだけでは不十分です。各部分は、適切な点で開始し、終了する必要があります。あなたの正規表現では、例えば "character_thing_with_additional_info_More_Description_Info_v001.md "の資産は "character"であり、記述は "thing_with_additional_info_More_Description_Info"であるのに対して、私は資産が "character_thing_with_additional_info"であり、記述が "More_Description_Info"であることを探しています – ColinKennedy
2番目のはい、私は同意する、この条約はあまり定義されていません。しかし、私は基本的には「資産は小文字である」と考えています。その場合、資産と説明の間の分割はCAPS _ ###でない限り、最初の資本ではありません。説明の中で "。 – ColinKennedy
私は 'assetText'行にサブ式を追加しました。私はあなたが今したい仕事をしていると思う – jez