0

正規表現を使用してその入力文字列をチェックする必要があるJavaを使用しています。私は正規表現の初心者です。

フォームに入力を入力しています。

以下は、正規表現を書き留める必要があるサンプルデータです。

LastName  FirstName

Ab.CD           BC
Ab-CFgD         Ab.CD
F'b-CF gD       BC
F'b-CF gD.      F.b-CF gD'D
Fb-CF gD'D      BC
F.b-CF gD'D     F'b-CF gD

意味dot(.), Hiphen(-), And single quotes(')LastNameとFirstnameの間に含まれます。

「姓、名」のみにregexxを書き留めました。

"[a-zA-Z]+, *[a-zA-Z]+"

What would the regular expression be for find all strings mentioned above table

4

2 に答える 2

0

"([a-zA-Z\\.\\-\\']*),\\s*([a-zA-Z\\.\\-\\']*)"

このWebサイトを使用して正規表現を試して、何が効果的かを判断してください。

正規表現テストサイト

于 2012-11-30T10:08:35.507 に答える
0

これを試して: -

"([a-zA-Z.'-]+),[ ]*([a-zA-Z.'-]+)"

説明 : -

(            // Capture group 1
  [          // Character class
    a-zA-Z   // alphabets
    .        // a Dot
    '        // A quote
    -        // A hyphen (Should be at the end, in the middle it means a range
  ]+         // Character class close. One or more repetition
)            // Group 1 closes

あなたの例で与えられているように、あなたの姓または名の間にスペースもあるようです。正しいか確認してください。

two capture groups上記の正規表現があります。両方のグループがキャプチャfirstnameし、lastname。両方を印刷できます。

いくつかの文字列で実行されるサンプル:-

String str1 = "Ab.CD, Ab.CD";
String str2 = "F'b-CFgD., F'b-CFgD.";
String str3 = "F'b-CF gD, F'b-CF gD";

System.out.println(str1.matches("([a-zA-Z.'-]+),[ ]*([a-zA-Z.'-]+)"));  // true
System.out.println(str2.matches("([a-zA-Z.'-]+),[ ]*([a-zA-Z.'-]+)"));  // true
System.out.println(str3.matches("([a-zA-Z.'-]+),[ ]*([a-zA-Z.'-]+)"));   //false

ご覧のとおり、3番目の文字列の間にスペースがあるため、最後の1つはfalseを出力します。スペースも一致させたい場合は、それをキャラクタークラスに追加します。


それを確認しfirstnamelastname文字だけで始めるには、次のように正規表現を変更できます。-

"([a-zA-Z][a-zA-Z.'-]+),[ ]*([a-zA-Z][a-zA-Z.'-]+)"

[a-zA-Z]最初の文字が指定されたアルファベット範囲からのものであることを確認するために、両方のパターンの先頭に追加されました。

于 2012-11-30T10:05:55.170 に答える