0

REGEX を使用して次のデータを抽出する方法を教えてください。

1) テキストA;テキストB;テキストC;テキストD

"textA;textB;textC" 別名 textD の親を抽出します

2) テキストA;テキストB;テキストC;テキストD AB(数値A)

"textA;textB;textC;textD" 別名 AB(numberA) の親を抽出します

3) textA;textB;textC;textD AB(numberA) 「numberA」を抽出して比較する

現在の実装では、Java文字列関数を使用しているため、構成できません。ユーザーが実際のデータを提供しなかったと思われるため、近いうちに関数を再度変更する必要があります。関数を構成可能にするために正規表現を使用したいと考えています。

4

2 に答える 2

3
  1. (.*);[a-zA-Z]+- $1
  2. (.*) .*- $1
  3. .* .*\((.*)\)- $1
    正規表現とグループの使用方法: http://www.javamex.com/tutorials/regular_expressions/capturing_groups.shtml
    例:

    String s = "textA;textB;textC;textD";
    Pattern pt = Pattern.compile("(.*);[a-zA-Z]+");
    Matcher mt = pt.matcher(s);
    if(mt.matches())
        System.out.println(mt.group(1));
    

それは印刷します: textA;textB;textC.
UPD: パターンがわからないので、1)のような答えtextA;textB;textC;(textD)も真です。そのような質問をするときは、正規表現を知らなくても単語だけでよいので、パターンを書いたほうがよいでしょう。
UPD:修正のためのthx

于 2012-06-06T12:16:55.930 に答える
0

これを簡単に使用できますか?

String[] arr = "textA;textB;textC;textD AB".spilt("[; ]");
于 2012-06-07T07:27:44.260 に答える