正規表現のオプショングループ?
-
06-07-2019 - |
質問
私がやっているpreg_match正規表現と混同しているようですので、新鮮な目と助けをいただければ幸いです。
現在の正規表現は次のとおりです。
/<!--menu:start:\(([0-9])\,([0-9])\)-->(.*?)<!--menu:end-->/se
数字の入力とコロンの入力を探しています。 :(1,4)オプションであるため、一致します:
<!--menu:start--><!--menu:end-->
または
<!--menu:start:(0,3)--><!--menu:end-->
解決
一致しないグループで囲み、オプションに設定します:(?:...)?
/<!--menu:start(?::\(([0-9])\,([0-9])\))?-->(.*?)<!--menu:end-->/se
他のヒント
これに似ています:
/<!--menu:start(?::\((\d),(\d)\))?-->(.*?)<!--menu:end-->/se
オプションにしたい部分の周りに非キャプチャグループ(?: )
を追加し、その後に疑問符を付けます:(?:<optional content>)?
これは、オプションの非キャプチャグループ-(?: )?
-を使用してオプション部分を照合し、\d
の代わりに[0-9]
を使用して数字を照合します:
/<!--menu:start(?::\((\d),(\d)\))?-->(.*?)<!--menu:end-->/se
括弧内の数字が複数の数字で構成されている場合は、代わりに次の数字を使用してください:
/<!--menu:start(?::\((\d+),(\d+)\))?-->(.*?)<!--menu:end-->/se
所属していません StackOverflow