2014-11-24 106 views
0

这是内容。xml解析中的正则表达式

<ext-link ext-link-type="uri" xlink:href="http://<xref&#x00A0;rid="x0026;AN=15230473">http://web.ebscohost.coms/ehost/detail&#x0026;#x003F;sid=d1f06770-cd74-4496-ae7b-7689ed05c6c4%40sessionmgr10&#x0026;#x0026;vid=1&#x0026;#x0026;hid=23&#x0026;#x0026;bdata=JnNpdGU9ZWhvc3QtbGl2ZQ%3d%3d&#x0026;#x0023;db=ufh&#x0026;#x0026;AN=15230473</xref>" link-type="url"> 

我想里面的XLink捕获:HREF = “http://<xref&#x00A0;rid="x0026;AN=15230473">http://web.ebscohost.coms/ehost/detail&#x0026;#x003F;sid=d1f06770-cd74-4496-ae7b-7689ed05c6c4%40sessionmgr10&#x0026;#x0026;vid=1&#x0026;#x0026;hid=23&#x0026;#x0026;bdata=JnNpdGU9ZWhvc3QtbGl2ZQ%3d%3d&#x0026;#x0023;db=ufh&#x0026;#x0026;AN=15230473</xref>

用双引号。

我试试这个,但不能得到我需要的。

<ext-link(?: [^>]+)? xlink:href="([^"]+)"[^><]*> 
+0

一些其他属性也都在构造线后:HREF – depsai 2014-11-24 10:12:41

+0

没有找到解决办法。 – depsai 2014-11-24 10:13:13

+0

尝试以上... – 2014-11-24 10:14:19

回答

1

使用\S+匹配一个或多个非空格字符。

<ext-link[^>]+? xlink:href="(\S+)" 

DEMO

+0

感谢它的工作。 – depsai 2014-11-24 10:33:34

+0

不客气.. – 2014-11-24 10:43:33

0
perl -pe 's/^.*xlink:href=\"//; s/\">$//' file 

实施例:

[email protected]:~/AMD/SO$ cat file 
<ext-link ext-link-type="uri" xlink:href="http://<xref&#x00A0;rid="x0026;AN=15230473">http://web.ebscohost.coms/ehost/detail&#x0026;#x003F;sid=d1f06770-cd74-4496-ae7b-7689ed05c6c4%40sessionmgr10&#x0026;#x0026;vid=1&#x0026;#x0026;hid=23&#x0026;#x0026;bdata=JnNpdGU9ZWhvc3QtbGl2ZQ%3d%3d&#x0026;#x0023;db=ufh&#x0026;#x0026;AN=15230473</xref>"> 


[email protected]:~/AMD/SO$ perl -pe 's/^.*xlink:href=\"//; s/\">$//' file 
http://<xref&#x00A0;rid="x0026;AN=15230473">http://web.ebscohost.coms/ehost/detail&#x0026;#x003F;sid=d1f06770-cd74-4496-ae7b-7689ed05c6c4%40sessionmgr10&#x0026;#x0026;vid=1&#x0026;#x0026;hid=23&#x0026;#x0026;bdata=JnNpdGU9ZWhvc3QtbGl2ZQ%3d%3d&#x0026;#x0023;db=ufh&#x0026;#x0026;AN=15230473</xref>