1

「、」で区切られたいくつかの文字列を含むテキストファイルがあります。文字列の形式は「x:somestring:anystring」です。「somestring」値のみを抽出することに興味があります。「x:」を「」に置き換えることで、「somestring:anystring」を抽出できます。

Pattern p= Pattern.compile("x:", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher("");

でも前にも言ったように、私は「somestring」だけに興味があります。「:anystring」を「」に置き換えるために2番目のパターンを追加することは可能ですか。同じプロセスをもう一度繰り返すことを考えましたが、もっと良い方法について質問したいと思いました。正規表現を改善する方法はありますか?「somestring」と「anystring」は固定値ではないことに注意してください。

4

3 に答える 3

1

分割を使用する:

    for (String s : subjectString.split(",")) {
        s.split(":")[1];
    }
于 2012-06-23T18:46:31.100 に答える
0

subjectStringを含む文字列がある場合"x:somestring:any string"、以下が抽出されsomestringます。

Pattern regex = Pattern.compile(
    "(?<=x:) # Assert position right after 'x:'\n" +
    "[^:]*   # Match any number of characters except colons", 
    Pattern.COMMENTS);
Matcher regexMatcher = regex.matcher(subjectString);
if (regexMatcher.find()) {
    ResultString = regexMatcher.group();
} 
于 2012-06-23T18:41:44.993 に答える
0

もう1つの簡単な方法は次のとおりです。

"x:somestring:any string".replaceAll (".*:(.*):.*", "$1")
于 2012-06-24T09:02:09.397 に答える