Java 需要一些帮助才能从引号和括号中获取数据吗
我正在使用JavaURL类从URL读取数据。问题是,我有一些字符串,我想用正则表达式去掉引号和括号。请帮帮我 我的输入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
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]