2016-05-25 16 views
0

特定のタグの内容を取得するのに以下のコードを使用していますが、実行する際に余分なデータがありますなぜそれが起こっているのですか?タイトルタグを検索すると、結果として" [echo] Title : <title>Unit Test Results</title>,Unit Test Results"が表示されますが、タイトルには"<title>Unit Test Results</title>"が含まれているのはなぜですか?この特別な",Unit Test Results"のものが来ています。antでjsを使用してHTMLでタグを検索する

<project name="extractElement" default="test"> 
<!--Extract element from html file--> 
<scriptdef name="findelement" language="javascript"> 
    <attribute name="tag" /> 
    <attribute name="file" /> 
    <attribute name="property" /> 
    <![CDATA[ 
     var tag = attributes.get("tag"); 
     var file = attributes.get("file"); 
     var regex = "<" + tag + "[^>]*>(.*?)</" + tag + ">"; 
     var patt = new RegExp(regex,"g"); 
     project.setProperty(attributes.get("property"), patt.exec(file)); 
    ]]> 
</scriptdef> 

<!--Only available target...--> 
<target name="test"> 
    <loadfile srcFile="E:\backup\latest report\Report-20160523_2036.html" property="html.file"/> 
    <findelement tag="title" file="${html.file}" property="element"/> 
    <echo message="Title : ${element}"/> 
</target> 

答えて

0

戻り値RegExp.exec()は配列です。 the Mozilla documentation on RegExp.prototype.exec()から:

返される配列は、捕捉された テキストを含む一致した各捕捉括弧のためのマッチ最初の項目として、テキスト、及びその後 つの項目を有しています。あなたがJavaScriptの...

var patt = new RegExp(regex,"g"); 
var execResult = patt.exec(file); 
print("execResult: " + execResult); 
print("execResult.length: " + execResult.length); 
print("execResult[0]: " + execResult[0]); 
print("execResult[1]: " + execResult[1]); 

に次のコードを追加する場合...あなたは次のような出力が得られます

...

[findelement] execResult: <title>Unit Test Results</title>,Unit Test Results 
[findelement] execResult.length: 2 
[findelement] execResult[0]: <title>Unit Test Results</title> 
[findelement] execResult[1]: Unit Test Results 
関連する問題