2013-07-20 56 views
2

我有一些HTML我在下面的格式extraced:的XPath通配符號

<table id="post123"> 
    <div id="postname">Post Name</div> 
</table> 
<table id="post124"> 
    <div id="postname">Post Name 2</div> 
</table> 

使用XPath,我想只得到其中有「後」,在他們的元素,後面數字。

我想用的:

table[contains(@id, "post")] 

但是,這也將與ID返回元素「postname」,這是不是我想要的。你會怎麼做?數字在xpath中是否有通配符?

還要注意,HTML可能是這樣的:

<table id="123post"> 
    <div id="namepost">Post Name</div> 
</table> 

回答

2

使用matches()嘗試代替。

喜歡的東西:

matches(@id,'^post\d+$') 

編輯(匹配123postpost123):

matches(@id,'^\d*post\d*$') 

這還會匹配id="post"。如果這是一個問題,你可以使用:

matches(@id,'(^post\d+$|^\d+post$)') 
+0

謝謝,這個作品,但只有當數字是在字母后面。如果數字在字母之前,那麼正則表達式會是什麼?爲什麼這不適用於正則表達式? – jbkkd

+0

@jbkkd - 我更新了regext以匹配兩者。 (它也會匹配只是'id =「post」'......不知道這是一個問題。)我也不確定regexpal(我用oXygen來測試)。 –

+0

工程就像一個魅力。謝謝! – jbkkd