matcher.find()false androidを返します -- java フィールド と android フィールド と pattern-matching フィールド 関連 問題

Matcher.find() return false android












0
vote

問題

日本語

var answerprototype = { name:'ss', get:function fn1() { return "--"; } } var lifeanswer = Object.create(answerprototype); 2 をHTMLコードの下から取得しようとしています。

<事前> <コード> var answerprototype = { name:'ss', get:function fn1() { return "--"; } } var lifeanswer = Object.create(answerprototype); 3

そのための以下のコードを使用しました

<事前> <コード> var answerprototype = { name:'ss', get:function fn1() { return "--"; } } var lifeanswer = Object.create(answerprototype); 4

しかしマッチャーは常にfalseを返します。私はパターンで問題があると思います ありがとう

英語

I am trying to get the softwareVersion from below html code.

<div class="title">Current Version</div> <div class="content" itemprop="softwareVersion"> 1.1.3  </div> </div> <div class="meta-info"> <div class="title">Requires Android</div> <div class="content" itemprop="operatingSystems">     2.2 and up   </div> </div> 

i used the below code for that

String Html = GetHtml("https://play.google.com/store/apps/details?id="+ AppID) Pattern pattern = Pattern.compile("softwareVersion">[^<]*</dd"); Matcher matcher = pattern.matcher(Html); matcher.find();  String GetHtml(String url1)      {         String str = "";         try          {             URL url = new URL(url1);             URLConnection spoof = url.openConnection();             spoof.setRequestProperty("User-Agent",                     "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; H010818)");             BufferedReader in = new BufferedReader(new InputStreamReader(                     spoof.getInputStream()));             String strLine = "";             // Loop through every line in the source             while ((strLine = in.readLine()) != null)              {                 str = str + strLine;             }         }          catch (Exception e)          {         }         return str;     } 

but matcher always return false. I think the i have problem in pattern can anyone pleas help me Thanks

</div
        
         
         

回答リスト

0
 
vote

他の誰かにコメントしているように、私は通常HTMLからのものを抽出するためにHTMLパーサーを使用します。ただし、あなたが文字列から単一の情報を引くだけの場合、私は正規表現を使いたい理由を見ることができます。

あなたがするべきことはこのようなものです - あなたの正規表現に関する問題は d でした。括弧内に気にするビットを囲む場合は、 9988777667

を使用してそれをつかむことができます。 <事前> <コード> import java.util.regex.*; public class R { public static void main(String[] args){ String Html = "<div class="title">Current Version</div> <div class="content" itemprop="softwareVersion"> 1.1.3 </div> </div> <div class="meta-info"> <div class="title">Requires Android</div> <div class="content" itemprop="operatingSystems"> 2.2 and up </div> </div>"; Pattern pattern = Pattern.compile("softwareVersion">([^<]*)</d"); Matcher matcher = pattern.matcher(Html); System.out.println(matcher.find()); System.out.println(matcher.group(1)); } }
 

As commented by somebody else, I would usually use an html parser for extracting stuff from html. However, in your case where you're just pulling a single bit of information out of a string I can see why you want to use a regex.

What you need to do is something like this - the issue with your regex was an extra d. Also if you enclose the bit you care about in parenthesis you can grab it using .group.

import java.util.regex.*;  public class R {    public static void main(String[] args){      String Html = "<div class="title">Current Version</div> <div class="content" itemprop="softwareVersion"> 1.1.3  </div> </div> <div class="meta-info"> <div class="title">Requires Android</div> <div class="content" itemprop="operatingSystems">     2.2 and up   </div> </div>";       Pattern pattern = Pattern.compile("softwareVersion">([^<]*)</d");      Matcher matcher = pattern.matcher(Html);      System.out.println(matcher.find());      System.out.println(matcher.group(1));   } } 
</div
 
 
 
 

関連する質問

2  Bash Scripting:最初に数字を削除するようにファイルの名前を変更するにはどうすればよいですか。  ( Bash scripting how do i rename files to remove numeric characters at the begin ) 
mvコマンドはgrepのようなパターンマッチングを受け入れません! これと類似の種類の操作を処理するための良い方法は何ですか? ...

1  Phoenixコントローラテストでパターンマッチングで2つのマップをアサートする方法  ( How to assert two maps in phoenix controller testing with pattern matching ) 
私のPhoenix Controllerテストでは、このようなことをしています、 <コード> describe "update/2" do setup [:create_user] test "Edits, and responds with the...

4  PowerShellを使用して角ブラケットを交換してください  ( Replace square bracket using powershell ) 
「委員会分[2010年10月〜hq.doc "などのファイル名がある場合は、角括弧の交換にどのようにPowerShellを手に入れますか。以下は機能しません。 <事前> <コード> ls -filter *`[*`]* | foreach -Process ...

1  ケースクラスのマッチングで抽象タイプを使用できますか?  ( Can i use abstract types in matching of case classes ) 
または他の言葉では: Tuple内の要素が同じケースクラスの場合に一致することを確認できます(引数)。 ケース[t] 下のものはありますか? <事前> <コード> sealed abstract class RootClass case class Child...

0  正規表現のタプルにヌルカレックを追加します  ( Add a null caracter to a tuple in regex ) 
このパターンを持っています<コード> w+=([ws]+.*?)[,]] https://regex101.com/r/ui3uhd/1] [link] とタプルに入れるためにヌルカレッタも捕獲したいです。 今私はこの文字列のために持っています <事前>...

0  条件付きの文字列からの数値  ( Conditionally matching numbers from string ) 
私はそのように配置された数字の文字列を持っています: 24_1_1_1_1_1_12_1_1_13_1_1 アンダースコアはスペース 私は3つの数字をつかむ必要があります。このケースの最初の数字<コード> 24 、次の2つの<コード> 1's の後...

0  パターン検索grep  ( Pattern searching grep ) 
私はそこにいる答えがたくさんあることを知っています - しかし私は私の質問に答えるものをまだ見つけていません: 誰かが助けることができることをうまくいけば! 私はそのように配置されている構成ファイルを持っています: <事前> <コード> define name...

4  正規表現は特定の文字列の後にのみ一致します  ( Regex only match after a certain string ) 
文書内の複数の名前を一致させることを望んでいますが、特定の文字列の後に名前を一致させるだけです。 例えば、文書: 名前:Tom 名前:アレックス 名前:カリーナ 名:その他の名前 名前:Josh 名前:Sarah 名前:マイク だから私は「その他の名...

3  複数のフィールドを持つオプションのマッチ方法は?  ( How to match for an option with multiple fields ) 
複数のフィールドのオプションにどのように一致させるのですか?次のコードがあります。 <事前> <コード> let opt_windowrecv = glfw_context.create_window(1280, 720, "Hello World!", gl...

1  文字列と一致する正規表現パターン  ( Regex pattern to match a string ) 
文字列と一致する正規表現パターンを探しています。引用符で囲まれたものとして定義された文字列。私がしようとしていることはこれらの文字列を解析することです: <事前> <コード> PRINT "test" PRINT "Hello":PRINT "World" ...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有