Java:爬网号码
我创建了一个java电话簿(桌面应用程序),在我的电脑上有一个程序可以输出呼叫者的号码。这是一个8位数的数字 下面是它的工作原理 我只想从弹出窗口中抓取8位数字,所以假设这是一个弹出窗口:Java:爬网号码,java,web-crawler,Java,Web Crawler,我创建了一个java电话簿(桌面应用程序),在我的电脑上有一个程序可以输出呼叫者的号码。这是一个8位数的数字 下面是它的工作原理 我只想从弹出窗口中抓取8位数字,所以假设这是一个弹出窗口: My name is someone like you, i am 22 years old, i was born in 19/10/1989, my phone number is 34544512 my brother is someone like me he is 18 ye
My name is someone like you, i am 22 years old, i was born in 19/10/1989,
my phone number is 34544512
my brother is someone like me he is 18 years old, born in 9101993
his number is 07777666
在本例中,我只想爬网07777666和34544512
我想每隔2秒检查一次弹出窗口中的新号码,如果来电者给我打了两次电话,他的号码将已存储在我的数据库中,如果没有,我将存储
注意:如果做不到,那么忘记弹出窗口,假设它只是一个文本,每2秒更新一次,如何抓取它
这不是家庭作业哈哈。。。这显然是一个家庭作业练习,你在作弊 你的教授可能希望你使用正则表达式。如果这超出了您的理解范围,那么只需对字符串进行标记,并使用
Long.parseLong()
检查每个标记即可
当然,这两种方法都假设数据与上面的示例完全相同,并且电话号码中没有破折号。如果需要考虑破折号(或点、空格等),那么正则表达式或手动逻辑很快就会变得非常复杂
更新:如果您需要说明带有破折号或其他字符的电话号码,我可能会:
Long.parseLong()
和String.length()
)确定剩下的是否是8位数字哈哈。。。这显然是一个家庭作业练习,你在作弊 你的教授可能希望你使用正则表达式。如果这超出了您的理解范围,那么只需对字符串进行标记,并使用
Long.parseLong()
检查每个标记即可
当然,这两种方法都假设数据与上面的示例完全相同,并且电话号码中没有破折号。如果需要考虑破折号(或点、空格等),那么正则表达式或手动逻辑很快就会变得非常复杂
更新:如果您需要说明带有破折号或其他字符的电话号码,我可能会:
Long.parseLong()
和String.length()
)确定剩下的是否是8位数字使用Java正则表达式。创建一个8位或更多位的正则表达式并使用它。您将能够从文本样本中提取这两个电话号码
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String args[]) throws Exception {
String testString = "My name is someone like you, i am 22 years old, i was born in 19/10/1989,"
+ " my phone number is 34544512 3454451266"
+ " my brother is someone like me he is 18 years old, born in 9101993 "
+ " his number is 07777666";
String[] pieces = testString.split("\\s+");
String expression = "\\d{8,}";
Pattern pattern = Pattern.compile(expression);
for (int i = 0; i < pieces.length; i++) {
if (pattern.matches(expression, pieces[i]))
System.out.println(pieces[i]);
}
}
}
import java.util.regex.Matcher;
导入java.util.regex.Pattern;
公开课考试{
公共静态void main(字符串args[])引发异常{
String testString=“我的名字和你一样,我今年22岁,出生于1989年10月19日。”
+“我的电话号码是3454451513454451266”
+“我哥哥和我一样他18岁,1993年出生”
+“他的电话号码是07777666”;
String[]pieces=testString.split(\\s+);
字符串表达式=“\\d{8,}”;
Pattern=Pattern.compile(表达式);
对于(int i=0;i
使用Java正则表达式。创建一个8位或更多位的正则表达式并使用它。您将能够从文本样本中提取这两个电话号码
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String args[]) throws Exception {
String testString = "My name is someone like you, i am 22 years old, i was born in 19/10/1989,"
+ " my phone number is 34544512 3454451266"
+ " my brother is someone like me he is 18 years old, born in 9101993 "
+ " his number is 07777666";
String[] pieces = testString.split("\\s+");
String expression = "\\d{8,}";
Pattern pattern = Pattern.compile(expression);
for (int i = 0; i < pieces.length; i++) {
if (pattern.matches(expression, pieces[i]))
System.out.println(pieces[i]);
}
}
}
import java.util.regex.Matcher;
导入java.util.regex.Pattern;
公开课考试{
公共静态void main(字符串args[])引发异常{
String testString=“我的名字和你一样,我今年22岁,出生于1989年10月19日。”
+“我的电话号码是3454451513454451266”
+“我哥哥和我一样他18岁,1993年出生”
+“他的电话号码是07777666”;
String[]pieces=testString.split(\\s+);
字符串表达式=“\\d{8,}”;
Pattern=Pattern.compile(表达式);
对于(int i=0;i
如果您的意思是要从文本字符串中提取8位数字,则可以按如下操作:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Regex
{
public static void main(String[] args)
{
Matcher m = Pattern.compile("\\b(\\d{8})\\b").matcher(
"Hello 12345678 world 23456789");
while (m.find())
{
System.out.println(m.group(1));
}
}
}
请参见如果您的意思是要从文本字符串中提取8位数字,则可以按如下操作:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Regex
{
public static void main(String[] args)
{
Matcher m = Pattern.compile("\\b(\\d{8})\\b").matcher(
"Hello 12345678 world 23456789");
while (m.find())
{
System.out.println(m.group(1));
}
}
}
请参见使用正则表达式?为什么你不支持任何不同于8挖的东西呢。没有空格的数字?看看@Hovanesyan在我的国家的电话号码是由8位数字组成的,所以我只需要得到它们。是的,但有些人可能会在组中键入空格、破折号,包括国际代码(使用+符号)等。@Hovanesyan很好,至少我不想抓取少于8位数的数字:D@SomeoneLikeYou查看我的代码片段,它包含8个或更多数字。使用正则表达式?为什么你不支持任何不同于8挖的东西呢。没有空格的数字?看看@Hovanesyan在我的国家的电话号码是由8位数字组成的,所以我只需要得到它们。是的,但有些人可能会在组中键入空格、破折号,包括国际代码(使用+符号)等。@Hovanesyan很好,至少我不想抓取少于8位数的数字:D@SomeoneLikeYou查看我的代码片段,它可以处理8个或更多的数字。无需执行拆分业务-您可以使用Matcher.find()和类似
“\\b(\\d{8})\\b”
的正则表达式-无需执行拆分业务-您可以使用Matcher.find()和一个类似正则表达式的