-2

私は正規表現がとても苦手なので、助けが必要です:

コンテンツで 1 つの正規表現を使用して複数のオプションを見つける必要があります。

  1. {{ Value }}- いつも
  2. {{ Value | Value 2 }}- オプションの第二部 - | 値 2
  3. {{ Value | Value 2(Value3) }}- オプションの 3 番目の部分 - (Value3)

規則: 値の前後にスペースを入れることができます

私が得たのはこれですが、3つのすべてのニーズとオプションでは機能しません:

/\{{(.*)|(.*)}}/siU
4

2 に答える 2

1
/\{{2}\s*?(.+)(?:\s*?\|\s*?(.+)\s*?(?:\(\s*?(.+)\s*?\))?)?\s*?\}{2}/isU

これを自分で美化してください。

  • \{{2}は開き中かっこ ( \{) で、ちょうど 2 つ ( {2}) です。
  • \s*?空白 ( \s)、0 回以上 ( *) であり、できるだけ多く ( ?ungreedy モード)
  • (.+)任意の文字 ( .)、1 回以上 ( +)
  • (?:x)?結果に追加されない ( ) 部分式 x であり、?:決してまたは 1 回発生する必要があります (トレーリング?)。ここでは、「値 2」の部分をオプションにするために使用されます。
  • \s*?\|\s*?見つかった数の空白、垂直バー、および追加の空白 (見つかった場合) です。
  • その後に、「値 3」の別のオプションの部分式が続きます。
  • \(\s*?(.+)\s*?\)左括弧 ( \()、見つかった数の空白 (\s*?再び)、実際の内容 (少なくとも 1 文字、.+)、追加の空白、および閉じ括弧です。
  • \}{2}は閉じ中かっこで、ちょうど 2 つです。
于 2012-04-09T10:48:15.310 に答える
0

私のアプローチ

/\{\{[\s\W]*((\w+)([\s\W]*\|[\s\W]*([\w]+)([\s\W]*\([\s\W]*(\w+)[\s\W]*\)[\s\W]*){0,1}){0,1})[\s\W]*\}\}/
于 2012-04-09T10:52:50.703 に答える