私は正規表現で非常に新しいですし、あなたの助けが必要です。私は2つのスパン間で数字と手紙を取っていきたいです。Java正規表現は2つのタグの間で変数を取る
<span>454.000 $</span>
私は454.000 $を取る。前に12のスペースがあります。私を助けてください。
私は正規表現で非常に新しいですし、あなたの助けが必要です。私は2つのスパン間で数字と手紙を取っていきたいです。Java正規表現は2つのタグの間で変数を取る
<span>454.000 $</span>
私は454.000 $を取る。前に12のスペースがあります。私を助けてください。
これは動作するはずです。
正規表現:
\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));
}
}
あなたがこれを使用することができます。これは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 $
タイタイ。それは働いています:) – Ahmet
のようなもので、以下の
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。この解決方法は、入力文字列の仕方によって異なります。
タイ。それも働いている:) – Ahmet
正規表現を使用してHTMLを解析する特別な理由は何ですか?一般的に、それはかなり眉をひそめている。 – csmckelvey
$ number = strip_tags($ HTMLBLOB); \ o/ –