カンマ(および区切り文字)の前後に2つのキャプチャグループが必要です。
$regex = "/{loadsegment (\d+),(\d+)}/";
また、私は、何でもある\dのではなく、数字の省略形を使用しています。.*?
また、1回以上一致するt+ためt、削除しました。これは、やりたいこととは思えません。t+t
2番目のグループをオプションにするには、?修飾子を使用します。
/{loadsegment (\d+),(\d+)?}/
ただし、これにはまだコンマが必要です。オプションにすることもできます...
/{loadsegment (\d+),?(\d+)?}/
...しかし今あなたの正規表現は一致します:
{loadsegment 123,}
私たちはおそらくそれを望んでいません。したがって、次のように、オプションの2番目のグループにコンマを含めます。
/{loadsegment (\d+)(?:,(\d+))?}/
説明(区切り文字を除く):
{loadsegment - Match "{loadsegment "
(\d+) - Match one or more digits, store in capturing group 1
(?: - Non-capturing group (so this won't be assigned a capturing group number
, - Match a comma
(\d+) - Match one or more digits, store in capturing group 2
)
? - Make the entire non-capturing group optional
RegExrでのデモ