2

私は正規表現に不慣れで、作業中のプロジェクトでは、入力された10桁の数字にすべて同じ数字が含まれているかどうかを確認するためにフィールドを検証する必要がありました。

私は次の解決策を見つけました:

([1-9])\\1{9}

ソース: http: //www.coderanch.com/t/461871/java/java/Check-if-number-contains-all

私はそれをグーグルしようとしましたが、表現が何をしているのかを説明するものは何もありません。この表現がどのように機能するかを誰かが説明できるかどうか疑問に思いました。

4

2 に答える 2

3

それはこのように動作します:

([1-9])   // Capture any number 1-9 and store it as the first "capture"
\1        // Substitute the first "capture" as raw text into the regex
{9}       // Match that raw text another 9 times (i.e. 10 in total)

0000000000これはによって一致しないので、それがあなたの表現と一致してはならないことを確認してください[1-9]

于 2012-10-02T13:48:29.997 に答える
1

それはすべてについてですcaptured groups

([1-9])capture group1〜9の1桁をキャプチャする

\1{9}first capture group9回繰り返すie([1-9])です。

一致するタグ名の間に常にあるコンテンツに一致する正規表現を持つことができます。

したがって、この正規表現を使用する

<(.*?)>(.*?)<\1>

以下の入力のそれぞれについて

<party>At Garden<party>
<dance>With GirlFriend<dance>
<drink>risky<drive>

グループ2でキャプチャします

At Garden
With GirlFriend
//risky would not match
于 2012-10-02T13:50:38.883 に答える