1

正規表現を使用してパスカル コードの文字列からパラメーター名を抽出しようとしています。これは、私が作業しようとしているものの中で最も複雑です。空白はなく、括弧は常に存在することに注意してください。

(rate:real;interest,principal:real)

私は現在、次のようにreを持っています:

[(](?:([\w]*)(?:[:][\w])?[;|,]?)*[)]

reがパラメーターを通過するときに各キャプチャグループにアクセスできることを望んでいましたが、明らかにアクセスできません。上記の例では、必要な値は「利率」、「利息」、「元本」です。

これに対する解決策はありますか?私自身の努力により、使用について言及されているここにたどり着きました

「matcher() with while… find()」。

私は正規表現を完全には理解していないので、助けていただければ幸いです。ありがとう。

4

2 に答える 2

1

比較的単純な正規表現でそれを行う 1 つの方法を次に示します。

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexTest {

    public static void main(String[] args) {
        String simple = "(rate:real;interest,principal:real)";
        String regex = "(\\w+:|\\w+,)";

        Pattern p = Pattern.compile(regex);
        Matcher m = p.matcher(simple);

        while (m.find()) {
            System.out.println(m.group().substring(0, m.group().length() - 1));
        }
    }
}

申し訳ありませんが、私はパスカルを知りませんが、あなたの名前はコロンまたはコンマで終わっているようです。正規表現はこれらの文字列を探し、最後の文字 (コロンまたはコンマ) を削除します。

テスト実行から得た出力は次のとおりです。

rate
interest
principal
于 2016-04-03T12:09:10.367 に答える