スカナリオ
構成された文字列から部分文字列を取得する必要があります。一致条件:
文字列は「section1:」で始まります
キャプチャされた文字列は、空白で区切られた、またはダッシュで区切られた英数字のリストです。
キャプチャされた文字列が特定のサフィックス ('-xx') で終わる場合、キャプチャされた文字列からサフィックスを除外します。
例
section1:ypsilon : セクション 1 が一致し、「ypsilon」を取得します
section1:ypsilon zeta : セクション 1 が一致し、「ypsilon zeta」を取得します
section1:ypsilon-zeta : セクション 1 が一致し、「ypsilon-zeta」を取得します
section1:ypsilon-xx : セクション 1 が一致し、「ypsilon」を取得し、「-xx」を除外します
section1:ypsilon zeta-xx : セクション 1 が一致し、「ypsilon zeta」を取得し、「-xx」を除外します
section1:ypsilon-zeta-xx : セクション 1 が一致し、「ypsilon-zeta」を取得し、「-xx」を除外します
section2:ypsilon : セクション 2 が一致しません
これまでの解決策
^section1:([a-zA-Z0-9\- ]+)(\-xx)?$
アイデアは、グループ 1 を取得することですが、グループ 2 はオプションです。 デモ。
質問
残念ながら、接尾辞はグループ 1 の定義と一致します。これは、ダッシュ付きのアルファベット文字列であるためです。そのため、キャプチャされた結果の文字列はサフィックスを除外しません。
どんな手掛かり?