Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中围绕空格的正则表达式_Java_Html_Regex - Fatal编程技术网

Java中围绕空格的正则表达式

Java中围绕空格的正则表达式,java,html,regex,Java,Html,Regex,所以我正在用Java1.5做一个项目,将球员数据从NFL的网页移动到个人数据存储中。我将页面的源代码转换为字符串格式,并对其进行解析以获取我想要提取的数据。我能够获得第一块定期格式化的播放器信息,但我正在努力格式化我的模式以适应一些异常结构化的空白。注释从它停止正确解析的位置开始 pattern = Pattern.compile( sTag + "(.*?)" + eTag + "\n"//position 1-group

所以我正在用Java1.5做一个项目,将球员数据从NFL的网页移动到个人数据存储中。我将页面的源代码转换为字符串格式,并对其进行解析以获取我想要提取的数据。我能够获得第一块定期格式化的播放器信息,但我正在努力格式化我的模式以适应一些异常结构化的空白。注释从它停止正确解析的位置开始

pattern = Pattern.compile(
                        sTag + "(.*?)" + eTag + "\n"//position 1-group
                        +sTag + "(.*?)" + eTag + "\n" //number 2
                        + "<td><a href=\"(.*?)/profile\">(.*?)</a>" + eTag + "\n" //name 4 (3 not used)
                        +sTag + "(.*?)" + eTag + "\n" //active status 5
//                      +"(.*?)" //6
//                      +sTag + "(.*?)" + eTag + "\n" //tackles 7
//                      +"(.*?) //8
//                      +sTag + "(.*?)" + eTag //sacks 9
//                      +"(.*?) //10
//                      +sTag + "(.*?)" + eTag //ff 11 (not used)
//                      +"(.*?) //12
//                      +sTag + "(.*?)" + eTag //int 13
                        ); 
pattern=pattern.compile(
sTag+“(.*?”+eTag+”\n”//位置1-组
+sTag+“(.*)”+eTag+“\n”//2号
+“+eTag+”\n”//name 4(3未使用)
+sTag+“(.*)”+eTag+“\n”//active状态5
//                      +"(.*?)" //6
//+sTag+“(.*)”+eTag+“\n”//铲球7
//                      +"(.*?) //8
//+sTag+“(.*?”+eTag//sacks 9
//                      +"(.*?) //10
//+sTag+“(.*?”+eTag//ff 11(未使用)
//                      +"(.*?) //12
//+sTag+“(.*?”+eTag//int 13
); 
我试图解析的HTML数据的格式如下:

<td class="tbdy1"><a href="/teams/atlantafalcons/profile?team=ATL">ATL</a></td></tr>
<tr class="even">
<td class="tbdy">SS</td>
<td class="tbdy">20</td>
<td><a href="/player/willallen/2506088/profile">Allen, Will</a></td>
<td class="tbdy">ACT</td>
<td class="ra">
                                TCKL
                            </td>
<td class="tbdy">36</td>
<td class="ra">
                                SCK
                            </td>
<td class="tbdy">0.0</td>
<td class="ra">
                                FF
                            </td>
<td class="tbdy">1</td>
<td class="ra">
                                INT
                            </td>
<td class="tbdy">--</td>

党卫军
20
表演
TCKL
36
SCK
0
FF
1.
国际的
--

有什么帮助吗?

经过一番挖掘,我决定用另一种方式解决这个问题。上的论坛向我展示了如何消除所有空白。这使模式识别变得非常简单。我的最终设置结果如下:

            line = line.replaceAll("\\s", "");
            String sTag = "<tdclass=\"tbdy\">";
            String eTag = "</td>";




            Pattern pattern;
            Matcher matcher;                
            pattern = Pattern.compile(
                    // pattern //stat group#
                    sTag + "(.*?)" + eTag //position 1
                    +sTag + "(.*?)" + eTag //number 2
                    + "<td><ahref=\"(.*?)/profile\">(.*?)</a>" + eTag //name 4 (3 not used)
                    +sTag + "(.*?)" + eTag //status 5
                    +"(.*?)" //6
                    +sTag + "(.*?)" + eTag //tackles 7
                    +"(.*?)" //8
                    +sTag + "(.*?)" + eTag //sacks 9
                    +"(.*?)" //10
                    +sTag + "(.*?)" + eTag //ff 11 (not used)
                    +"(.*?)" //12
                    +sTag + "(.*?)" + eTag //int 13
                    );
            System.out.println(" " + matcher.group(1) +" "+ matcher.group(2) + " " + matcher.group(4)+" "+ matcher.group(5)+ " " + matcher.group(7)+ " " + matcher.group(9)+ " " + matcher.group(13));
line=line.replaceAll(“\\s”和“);
字符串sTag=“”;
字符串eTag=“”;
模式;
匹配器匹配器;
pattern=pattern.compile(
//模式//统计组#
sTag+“(.*?”+eTag//位置1
+sTag+“(.*?”+eTag//2号
+“”+eTag//name 4(3未使用)
+sTag+“(.*?”+eTag//状态5
+"(.*?)" //6
+sTag+“(.*?”+eTag//铲球7次
+"(.*?)" //8
+sTag+“(.*?”+eTag//sacks 9
+"(.*?)" //10
+sTag+“(.*?”+eTag//ff 11(未使用)
+"(.*?)" //12
+sTag+“(.*?”+eTag//int 13
);
System.out.println(“+matcher.group(1)++matcher.group(2)++matcher.group(4)++matcher.group(5)++matcher.group(7)++matcher.group(9)++matcher.group(13));

我希望我可以!你有没有其他解决问题的方法的建议?我必须用Java解析代码,这是我所知道的唯一要求。另外,将Pattern.compile([Pattern])更改为Pattern.compile([Pattern],Pattern.DOTALL)也可以做到这一点。