0

私はJavaURLクラスを使用して、URLからデータを読み取ります。問題は、いくつかの文字列があり、正規表現を使用して引用符と角かっこを削除したいということです。私を助けてください。

私の入力

1 - alt="Shervin Champbell"

2 - alt=("Shervin Champbell")

結果は次のようになります

Shervin Champbell

これらの引用符と角かっこを削除したいだけです。私は一生懸命頑張っていますが無駄です。

alt、角かっこ、引用符を削除したい

出力は次のようになります:Shervin Champbell

ここに私のコードがあります

import java.io.*;
import java.util.regex.*;

public class URLReader {
 public static void main(String[] args) throws Exception {
        System.setProperty("http.proxyHost", "192.168.1.10");
        System.setProperty("http.proxyPort", "8080");
        URL url = new URL("http://www.ucp.edu.pk/information-technolo
           /faculty-staff/faculty-staff.aspx");
        BufferedReader in = new BufferedReader(
        new InputStreamReader(url.openStream()));
        String inputLine;
        while ((inputLine = in.readLine()) != null)
               //found(inputLine);
               names(inputLine);
        in.close();
    }

    static void names(String name){
    Pattern pattern = Pattern.compile("");
    Matcher matcher = pattern.matcher(name);
    if(matcher.find()){
        String abc = name.substring(matcher.start(), matcher.end());
        System.out.println(abc);
    }
    }
}
4

3 に答える 3

1

http://rextester.com/replace/QYV56186それほど堅牢ではありませんが、現在の例で動作します。

于 2012-12-30T17:35:44.523 に答える
0

私はこの正規表現のようなものを考えています:

alt=[("]*(\w*[^)"]*)[)"]*

キャプチャされた値は目的の出力です

正規表現の文字列は次のとおりです。

"alt=[(\"]*(\\w*[^)\"]*)[)\"]*"
于 2012-12-30T17:36:59.110 に答える
0

あなたは本当に正規表現でそれをしなければなりませんかそれは難しい方法のようです。なぜだけではないのですか?

import java.util.*;

public class Strings {
    public static void main(String[] args) {
        String[] inputs = { "alt=\"Shervin Champbell\"",
                            "alt=(\"Shervin Champbell\")" };
        for (String input : inputs) {
            System.out.println(quotedStrings(input));
        }
    }

    public static List<String> quotedStrings(String input) {
        String[] parts = input.split("\"");
        List<String> result = new ArrayList<>();
        for (int i = 1; i < parts.length; i+=2) {
            result.add(parts[i]);
        }
        return result;
    }
}

出力(リストであるため中かっこで囲みます):

[Shervin Champbell]
[Shervin Champbell]

必要に応じて、入力文字列内の複数の引用符で囲まれた文字列を処理できるという追加の利点があります。

さらに良いことに、commons-langを使用します。これは、StringUtils.substringBetween()を介して単一の文字列を検索するか、StringUtils.substringsBetween ()を介して複数の文字列を検索します。

于 2012-12-30T17:43:52.043 に答える