2014-11-24 140 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>