我是正则表达式的新手,需要你的帮助。我想在两个跨度之间取数字和字母。
<span>454.000 $</span>
我想要454.000美元。之前有12个空间。请帮帮我。
答案 0 :(得分:0)
这应该有效。
正则表达式:
\s+<.+>(.+)<.+>
输入:
<span>454.000 $</span>
输出:
454.000 $
JAVA CODE:
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));
}
}
答案 1 :(得分: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));
}
}
这可以gwill给你:
454.000 $
答案 2 :(得分: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
)。此解决方案取决于输入字符串的方式。