我正在使用節點,我需要將UNIX類型的grep命令應用於我在HTTP GET之後獲得的正文響應。 這裏是進入的文本(體變量):似乎無法爲特定情況制定正則表達式
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <om2m:discovery xmlns:om2m="http://uri.etsi.org/m2m" xmlns:xmime="http://www.w3.org/2005/05/xmlmime">
<om2m:matchSize>65</om2m:matchSize>
<om2m:discoveryURI>
<reference>gscl</reference>
<reference>gscl/scls</reference>
<reference>gscl/scls/subscriptions</reference>
<reference>gscl/scls/mgmtObjs</reference>
<reference>gscl/scls/mgmtObjs/subscriptions</reference>
<reference>gscl/applications</reference>
<reference>gscl/applications/subscriptions</reference>
<reference>gscl/applications/mgmtObjs</reference>
<reference>gscl/applications/mgmtObjs/subscriptions</reference>
<reference>gscl/accessRights</reference>
<reference>gscl/accessRights/subscriptions</reference>
<reference>gscl/groups</reference>
<reference>gscl/groups/subscriptions</reference>
<reference>gscl/containers</reference>
<reference>gscl/containers/subscriptions</reference>
<reference>gscl/subscriptions</reference>
<reference>gscl/accessRights/AR_ADMIN</reference>
<reference>gscl/accessRights/AR_ADMIN/subscriptions</reference>
<reference>gscl/scls/nscl</reference>
<reference>gscl/scls/nscl/applications</reference>
<reference>gscl/scls/nscl/applications/subscriptions</reference>
<reference>gscl/scls/nscl/applications/mgmtObjs</reference>
<reference>gscl/scls/nscl/applications/mgmtObjs/subscriptions</reference>
<reference>gscl/scls/nscl/accessRights</reference>
<reference>gscl/scls/nscl/accessRights/subscriptions</reference>
<reference>gscl/scls/nscl/groups</reference>
<reference>gscl/scls/nscl/groups/subscriptions</reference>
<reference>gscl/scls/nscl/containers</reference>
<reference>gscl/scls/nscl/containers/subscriptions</reference>
<reference>gscl/scls/nscl/subscriptions</reference>
<reference>gscl/scls/nscl/attachedDevices</reference>
<reference>gscl/scls/nscl/attachedDevices/subscriptions</reference>
<reference>gscl/scls/nscl/notificationChannels</reference>
<reference>gscl/scls/nscl/mgmtObjs</reference>
<reference>gscl/scls/nscl/mgmtObjs/subscriptions</reference>
<reference>gscl/scls/nscl/m2mPocs</reference>
<reference>gscl/applications/98191axla</reference>
<reference>gscl/applications/98191axla/subscriptions</reference>
<reference>gscl/applications/98191axla/containers</reference>
<reference>gscl/applications/98191axla/containers/subscriptions</reference>
<reference>gscl/applications/98191axla/accessRights</reference>
<reference>gscl/applications/98191axla/accessRights/subscriptions</reference>
<reference>gscl/applications/98191axla/groups</reference>
<reference>gscl/applications/98191axla/groups/subscriptions</reference>
<reference>gscl/applications/98191axla/notificationChannels</reference>
<reference>gscl/applications/98191axla/containers/SENSOR </reference>
<reference>gscl/applications/98191axla/containers/SENSOR/contentInstances</reference>
<reference>gscl/applications/98191axla/containers/SENSOR/contentInstances/subscriptions</reference>
<reference>gscl/applications/98191axla/containers/SENSOR/subscriptions</reference>
<reference>gscl/applications/98191axla/containers/SENSOR/contentInstances/CI_23326802</reference>
<reference>gscl/applications/98191axla/containers/DATA</reference>
<reference>gscl/applications/98191axla/containers/DATA/contentInstances</reference>
<reference>gscl/applications/98191axla/containers/DATA/contentInstances/subscriptions</reference>
<reference>gscl/applications/98191axla/containers/DATA/subscriptions</reference>
<reference>gscl/applications/98191axla/containers/DATA/contentInstances/CI_566628946</reference>
<reference>gscl/applications/98191axla/containers/CONT_81747241</reference>
<reference>gscl/applications/98191axla/containers/CONT_81747241/contentInstances</reference>
<reference>gscl/applications/98191axla/containers/CONT_81747241/contentInstances/subscriptions</reference>
<reference>gscl/applications/98191axla/containers/CONT_81747241/subscriptions</reference>
<reference>gscl/applications/98191axla/containers/SENSOR/contentInstances/CI_285448423</reference>
<reference>gscl/applications/98191axla/containers/CONT_360523761</reference>
<reference>gscl/applications/98191axla/containers/CONT_360523761/contentInstances</reference>
<reference>gscl/applications/98191axla/containers/CONT_360523761/contentInstances/subscriptions</reference>
<reference>gscl/applications/98191axla/containers/CONT_360523761/subscriptions</reference>
<reference>gscl/applications/98191axla/containers/DATA/contentInstances/CI_395775165</reference>
</om2m:discoveryURI> </om2m:discovery>
從該文本,我需要提取應用和容器,其中,在這種情況下,等於98191axla之間的ID。我試圖用匹配方法做到這一點:
var searchFor="\s<reference>gscl\/applications\.\d\/DATA\/contentInstances\/subscriptions<\/reference>";
console.log("Looking for:"); console.log(searchFor);
var found = body.match(searchFor);
它總是返回-1。我從來沒有使用過正則表達式,所以我不得不嘗試不同的東西......都沒有工作。 任何幫助非常感謝!
謝謝! (btw,我知道這是一個XML表示,但它不是一個複雜的孩子,所以我認爲操縱文本會更容易...)
[你不能/嘗試用正則表達式解析xml/html](http://stackoverflow.com/a/1732454/560593),而是使用一些實際解析語言的東西。例如,有一個[xml2js](https://www.npmjs.org/package/xml2js)模塊,您可以導入並使用 – 2014-09-24 23:53:10
我試過幾個庫(xml2js,xmldoc和libxmljs),但我只是認爲對於這個特定的應用程序和XML表示,正則表達式會更容易... – Dankex 2014-09-25 00:55:03