質問

私がやっている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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top