正则表达式--前后查找

前后查找:对某一位置的前后内容进行查找
1.向前查找:查找出现在被匹配文本之后的字符,但不消费那个字符
从语法上看,一个向前查找其实就是一个以?=开头的子表达式,需要匹配的文本跟在=的后面
例如:提取URL地址的协议名部分
 要匹配的文本:
    http://www.forta.com
    http://mail.forta.com
    ftp://ftp.forta.com
    正则表达式:.+(?=:)
    : 不包含在匹配结果里面
要匹配的文本:
    http://www.forta.com
    http://mail.forta.com
    ftp://ftp.forta.com
    正则表达式:.+(:)
    : 包含在匹配结果里面
2.向后查找:查找出现在被匹配文本之前的字符,但不消费那个字符(?<=)
  要匹配的文本:
  ABC01: $23.45
  CKS02: $109.42
  CVD03: $28.45
  ABC04: $98.27
  XAX05: $78.98
  Total items found: 5
  正则表达式:\$[0-9.]+
 
  要匹配的文本:
  ABC01: $ 23.45
  CKS02: $ 109.42
  CVD03: $ 28.45
  ABC04: $ 98.27
  XAX05: $ 78.98
  Total items found: 5
  正则表达式:(?<=\$)[0-9.]+
区别:向前查找的长度是可变的,它可以包含.和+之类的元字符,所以它们非常灵活
向后查找模式只能是固定长度
3.把向前查找和向后查找结合起来
 要匹配的文本:
<HEAD>
          <TITLE> Ben forta's homepage</TITLE>
</HEAD>
正则表达式:(?<=\<[tT][iI][tT][lL][eE]>).*(?=</[tT][iI][tT][lL][eE]>)
4.对前后查找取非
向后查找价格
 要匹配的文本:
 I paid $ 30 for 100 apples,50 oranges and 30 pears.
 I save as $ 5 on this order.
 正则表达式:(?<=\$)\d+


 只查找数量
要匹配的文本:
 I paid $30 for 100 apples, 50 oranges and 30 pears.
 I save as $5 on this order.
 正则表达式:\b(?<!\$)\d+\b
\b定义两个单词边界
各种前后查找操作符:
(?=)   正向前查找
(?!)   负向前查找
(?<=)  正向后查找
(?<!)  负向后查找
 







  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值