2017-02-22 3 views
-4

私は正規表現で非常に新しいですし、あなたの助けが必要です。私は2つのスパン間で数字と手紙を取っていきたいです。Java正規表現は2つのタグの間で変数を取る

 <span>454.000 $</span> 

私は454.000 $を取る。前に12のスペースがあります。私を助けてください。

+1

正規表現を使用してHTMLを解析する特別な理由は何ですか?一般的に、それはかなり眉をひそめている。 – csmckelvey

+0

$ number = strip_tags($ HTMLBLOB); \ o/ –

答えて

0

これは動作するはずです。

正規表現:

\s+<.+>(.+)<.+> 

入力:

  <span>454.000 $</span> 

出力:

454.000 $ 

Javaコード:

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

final String regex = "\\s+<.+>(.+)<.+>"; 
final String string = "   <span>454.000 $</span>"; 

final Pattern pattern = Pattern.compile(regex); 
final Matcher matcher = pattern.matcher(string); 

while (matcher.find()) { 
    System.out.println("Full match: " + matcher.group(0)); 
    for (int i = 1; i <= matcher.groupCount(); i++) { 
     System.out.println("Group " + i + ": " + matcher.group(i)); 
    } 
} 

参照:https://regex101.com/r/2zg5Ws/1

+0

タイ。それは働いています:) – Ahmet

+0

申し訳ありませんが、私はenogh評判を持っていません:( – Ahmet

0

あなたがこれを使用することができます。これはgwillでき

public static void main(String[] args) { 
    String str = "  <span>454.000 $</span>"; 
    String start = "<span>", end = "</span>"; 
    String regexString = Pattern.quote(start) + "(.*?)" + Pattern.quote(end); 
    Pattern pattern = Pattern.compile(regexString); 
    Matcher matcher = pattern.matcher(str); 

    while (matcher.find()) { 
     System.out.println(matcher.group(1)); 
    } 

} 

はあなたを与える:パターンマッチングを使用してグループをキャプチャ

454.000 $ 
+0

タイタイ。それは働いています:) – Ahmet

0

のようなもので、以下の

String x = " <span>454.000 $</span> "; 
Pattern p = Pattern.compile("<span>(.*?)</span>"); 
Matcher m = p.matcher(x); 
if (m.find()) { 
    System.out.println(">> "+ m.group(1)); // output 454.000 $ 
} 

しかし、そのような場合、私は常にを使用することを好むそれは実際のテキストからグループを捕捉し、そのグループ($1)との全体のテキストを置換され置き換えるため

String num = x.replaceAll(".*<span>(.*?)</span>.*", "$1"); 
// num has 454.000 $ 

:それはコードの短いバージョンであるとして3210。この解決方法は、入力文字列の仕方によって異なります。

+0

タイ。それも働いている:) – Ahmet

関連する問題