Java 需要一些帮助才能从引号和括号中获取数据吗

Java 需要一些帮助才能从引号和括号中获取数据吗,java,regex,Java,Regex,我正在使用JavaURL类从URL读取数据。问题是,我有一些字符串,我想用正则表达式去掉引号和括号。请帮帮我 我的输入 1 - alt="Shervin Champbell" 2 - alt=("Shervin Champbell") 结果应为 Shervin Champbell 我只想去掉这些引号和括号。我太努力了,但徒劳无功 我想去掉alt、方括号和引号 输出应为:Shervin Champbell 这是我的代码 import java.io.*; import java.util.r

我正在使用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);
    }
    }
}

不是很健壮,但适用于当前的示例

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

alt=[("]*(\w*[^)"]*)[)"]*
捕获的值是所需的输出

正则表达式字符串是:

"alt=[(\"]*(\\w*[^)\"]*)[)\"]*"
你真的要用正则表达式吗?这似乎很难。为什么不只是:

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;
    }
}
它还有一个额外的好处,即如果需要,它将处理输入字符串中的多个带引号的字符串


更好的是,只需使用commons lang,它已经通过查找单个字符串或多个字符串来执行此操作。

我太努力了,但徒劳无功。请发布您尝试的内容。您是否也要删除
alt=
?URL中还有其他内容吗?您想保留其余部分、删除其余部分还是删除整个URL中的引号?
[^(alt=)]\“\w\”
。我正在努力this@PeterLawrey... 我已成功地从URL中筛选出该数据。现在我想去掉alt、=、方括号和引号。@luckyali444,我强烈推荐这个网站,它可以帮助你在真实的环境中测试你的正则表达式time@benjarobin... 我只是在我的程序中复制并粘贴了您建议的RE,eclipse不允许我使用它。语法有问题。让我向您展示我的代码,我想把建议的RE放在哪里,但它给出了语法错误消息。@luckyali444在Java的\中是特殊字符。它用于创建其他特殊字符,如新行
\n
,或关闭字符的特殊含义,如引号
\“
(否则java将
视为字符串的结尾)。要将\传递给正则表达式引擎,您需要转义它的特殊含义。要做到这一点,请使用\\,因此在这个正则表达式中,您需要使用
\\w
@benjarobin…,而不是
\w
。。。。我刚试过你的第二个正则表达式字符串。它帮了我一阵子。多谢各位much@Pshemo谢谢。您的建议在一段时间内也起了作用,“您真的必须使用regex吗?这似乎是一条艰难的道路”-->您正在使用regex;)看这张照片
[Shervin Champbell]
[Shervin Champbell]