0

我正在使用 java URL 类从 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

你真的必须用正则表达式来做吗?这似乎很难。为什么不只是:

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 回答
0

我在想这样的正则表达式:

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

捕获的值是所需的输出

正则表达式字符串是:

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