2017-02-22 23 views
-4

Я очень новичок в регулярном выражении и нуждаюсь в вашей помощи. Я хочу брать цифры и буквы между двумя пролетами.java regex принимает переменную между двумя тегами

 <span>454.000 $</span> 

Я хочу взять 454.000 долларов США. Раньше было 12 мест. Пожалуйста, помогите мне.

+1

Любая конкретная причина, по которой вы используете регулярное выражение для анализа HTML? В общем, это довольно неодобрительно. – csmckelvey

+0

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

ответ

0

Это должно работать.

Regexp:

\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

Ty ty. он работает :) – Ahmet

+0

извините, но у меня нет репутации enogh :( – Ahmet

0

Вы можете использовать это:

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

Ty ty. it working :) – 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 $ 
} 

Но для таких случаев я всегда предпочитаю использовать replaceAll(), как это сокращенный вариант кода:

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

Для замены фактически захватив группу из текста и заменить весь текст с этой группой ($1). Это решение зависит от того, как ваша строка ввода.

+0

Ty ty. он тоже работает :) – Ahmet

 Смежные вопросы

  • Нет связанных вопросов^_^