分别用vim、java正则,不优美地处理一段html,得到想要的字段

源:

 

<select name="nnsort_id" οnchange="form1.Clxh.value=this.value;">
    
  <option value="">---汽车型号---</option><option value="悍马 H2">悍马 H2</option><option value="悍马 H2 SUT">悍马 H2 SUT</option><option value="悍马 H3">悍马 H3</option><option value="悍马H1">悍马H1</option></select>

目标:
悍马 H2,悍马 H2 SUT,悍马 H3,悍马H1

Java方式:

package regex;

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

public class HtmlOption {
	public static void main(String[] args){
		String str_o="<option value=>---汽车型号---</option><option value=伊兰特1.6>伊兰特1.6</option><option value=伊兰特1.8>伊兰特1.8</option><option value=伊兰特 1.8 手动 豪华型>伊兰特 1.8 手动 豪华型</option><option value=伊兰特 1.8 自动 豪华型>伊兰特 1.8 自动 豪华型</option><option value=伊兰特 1.6 自动 豪华型>伊兰特 1.6 自动 豪华型</option><option value=伊兰特 1.6 手动 豪华型>伊兰特 1.6 手动 豪华型</option><option value=伊兰特 1.6 自动 标准型>伊兰特 1.6 自动 标准型</option><option value=伊兰特 1.6 自动 舒适型>伊兰特 1.6 自动 舒适型</option><option value=伊兰特 1.6 手动 舒适型>伊兰特 1.6 手动 舒适型</option></select>";
		String string=str_o.replaceAll("</select>", "");
		string=string.replaceAll("<option value=>---汽车型号---</option>", "");
		//去掉左边的<option ..
		Pattern pattern = Pattern.compile("<option.+?>", Pattern.DOTALL);
		Matcher matcher = pattern.matcher(string);
		 string = matcher.replaceAll(",");

		//去掉右边的</option>
		/**
		 * 没必要,replacement为空值即可
		 */
/*		Pattern pattern2 = Pattern.compile("</option>", Pattern.DOTALL);
		Matcher matcher2 = pattern2.matcher(string);
		string = matcher2.replaceAll("");*/
		string=string.replaceAll("</option>", "");
		//去掉第一个,
		Pattern pattern3 = Pattern.compile(",", Pattern.DOTALL);
		Matcher matcher3 = pattern3.matcher(string);
		string = matcher3.replaceFirst("");
		System.out.println(string);
	}
}
 很臃肿。哎。

VIM方式:
录制宏@a
 写道
去掉开头 :%s/<select.*/
去掉空行 :g/^\s*$/d
去掉第三行的空格 :%s/\s\s/
去掉品牌这个opt :%s/<option value=.*---<\/option>/
去掉左option :%s/<option value="[^<]*">//gc
去掉右option-转, :%s/<\/option>/,/gc
去末尾,</select> :%s/,<\/select>/
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值