2

これを解決するのに問題があります: http://regexone.com/lesson/13

私は次のようなことをしようとしていました:(\d+x\d+)

しかし、なぜそれが機能しないのですか?とにかく、「グループ化」をどのように使用しますか? ありがとう!

input text  required capturing group result
1280x720    1280, 720
1920x1600   1920, 1600
1024x768    1024, 768
4

3 に答える 3

1

(キャプチャ グループは、角かっことで囲まれています)

あなたの regex(\d+x\d+)には、キャプチャ グループが 1 つあります。これは、正規\d+x\d+表現全体がキャプチャ グループに囲まれているためです。

特にその質問では、2 つの個別の数値を取得する必要があります。したがって、1 つのグループが 1 つの番号を「キャプチャ」し、もう 1 つのグループが別の番号を「キャプチャ」します。

したがって、最初のグループでは、最初の数字 (文字シーケンス) のみをキャプチャします - (\d+). 二代目も同様です。

さらに、 は必要ないためx、キャプチャ グループの外に配置します。

したがって、(\d+)x(\d+)あなたが望むものになります。

于 2013-02-11T03:10:34.163 に答える
1

この演習は、グループのキャプチャに関するものです。要件は、次のように、 2 つの一連の数字を別々にキャプチャし、 をスキップするxことです。

(\d+)x(\d+)

一方、あなたのソリューションは、入力全体を括弧で示された単一のキャプチャ グループにキャプチャします。

キャプチャ全体を処理するのではなく、正規表現によってキャプチャされた入力の個々の部分を処理する必要がある場合、キャプチャ グループの概念は非常に重要です。リンクの例では、解像度の水平成分の最初のグループと、解像度の垂直成分の 2 番目のグループを取得できます。2 つの個別のキャプチャ グループがなければx、コード内で見つけて、追加の分割を行う必要があります。

于 2013-02-11T03:10:41.323 に答える
1

x 解像度と y 解像度の 2 つの特定のものを一致させる必要があります。つまり、2 つのグループが必要です。

したがって、次のものが必要であることがわかります。()()

x をキャプチャする必要はなく、x はキャプチャするものの間にあります。 ()x()

最後に、探しているものを入力する必要があります。1 つ以上の(+) 数字 (\d)が必要です。したがって、完成した正規表現は次のとおりです。

(\d+)x(\d+)

于 2013-02-11T03:12:15.273 に答える