解析網頁原始碼,提取表單元素的 id 屬性值。例如從 <input type='text' id='baijinshan' name='baijinshan' > 中提取 baijinshan。
package cn.bai.test;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexTest {
public static void main(String[] args) {
String html = "<input type='text' id='baijinshan' name='baijinshan' >";
// 正則:look-behind 斷言 id=' 開頭,look-ahead 斷言 ' name 結尾
String regex = "(?<=id=')[\\s\\S]+?(?=' name)";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(html);
if (m.find()) {
System.out.println("提取的 id: " + m.group()); // 輸出: baijinshan
}
}
}
| 片段 | 含義 |
|---|---|
(?<=id=') | 正向後顧斷言:匹配位置前必須是 id=',不消耗字符 |
[\\s\\S]+? | 非貪婪匹配任意字符(含換行),. 不匹配換行,故用 [\\s\\S] |
(?=' name) | 正向前瞻斷言:匹配位置後必須是 ' name,不消耗字符 |
Pattern.compile(regex):編譯正則為模式物件(可重用,執行緒安全)。matcher(input):建立匹配器,綁定輸入字串。find():尋找下一個匹配子串,返回 boolean。group():返回整個匹配內容;group(n) 返回第 n 組捕獲組。while (m.find()) 迭代。Matcher.results() 串流式處理。