括弧内の部分が数字であると想定される場合のマッチング。
string inputstring="Likes (20)"
Regex reg=new Regex(@"\((\d+)\)")
string num= reg.Match(inputstring).Groups[1].Value
説明: 定義上、regexp は部分文字列と一致するため、特に指定しない限り、探している文字列は文字列内の任意の場所に出現する可能性があります。
\d は数字を表します。任意の 1 桁に一致します。
潜在的に数回繰り返されることを望み、少なくとも 1 回は必要です。+ 記号は、1 回以上繰り返される前のシンボルまたはグループの正規表現です。
したがって、\d+ は 1 つ以上の数字に一致します。20に一致します。
括弧内の数値を確実に取得するには、( と ) の間にある必要があります。これらは正規表現の特殊文字であるため、エスケープする必要があります。
(\d+) は (20) と一致し、ほぼ完了です。
括弧内の部分が必要であり、括弧を含めないため、数字部分が単一のグループであることを正規表現に伝えます。
これは、正規表現で括弧を使用して行います。((\d+)) は引き続き (20) に一致しますが、20 はこの一致のサブグループであり、Match.Groups[] で取得できることがわかります。
括弧内の文字列の場合、少し難しくなります。
Regex reg=new Regex(@"\((.+)\)")
多くの文字列で機能します。(ドットは任意の文字に一致します)しかし、入力が「これは例です(parantesis1)(parantesis2)」のようなものである場合、キャプチャされたサブグループとして(parantesis1)(parantesis2)とparantesis1)(parantesis2)が一致します。あなたが求めているものになります。
解決策は、「閉じ括弧を除く任意の文字」のマッチングを行うことです
Regex reg=new Regex(@"\(([^\(]+)\)")
これにより、(parantesis1) が最初の一致として検出され、parantesis1 が .Groups[1] になります。
ネストされた括弧ではまだ失敗しますが、正規表現はネストされた括弧の正しいツールではないため、このケースは少し範囲外だと思います。
グループの前に文字列が常に "Likes " で始まることがわかっている場合は、Saves ソリューションの方が優れています。