当前位置: 首页 > news >正文

正则表达式-匹配A和B之间字符串

需求:在匹配到 union的时候检测后面是不是union all

^是正则表达式匹配字符串开始位置

$是正则表达式匹配字符串结束位置

* (?!all) 的意思是 , 不匹配all
* 那么((?!all).)*  的意思就是匹配  不含all的字符(?!all) 跟 任意字符. 的组合,出现任何次
* ((?!all).)* 的结果就是 匹配了不包含all的字符串

检验如下:

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

public class RegexMatches {
	
	public static void main(String args[]) {
		String str = "SELECT E_Name FROM Employees_China union  SELECT E_Name FROM Employees_USA";
		String pattern = "union\\s*((?!all).)*$";
		Pattern r = Pattern.compile(pattern);
		Matcher m = r.matcher(str);
		System.out.println(m.matches());
	}

}

或者使用

?=、?!、?<= ?<! 用于限定它前后的表达式,不能单独使用,本身没有作用。
 a(?=b) 匹配后面有 b 的 a。
 a(?!b) 匹配后面没有 b 的 a。
 (?<=a) b 匹配前面有 a 的 b。
 (?<!a) b 匹配前面没有 a 的 b。

正则表达式为  (?<=左侧的内容).*(?=右侧的内容)

\s

匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。

\S

匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。

字符串"my name iszhangvalue  hello  world"

①、想要获取"is" 和“value”之间的内容但是不包括“is”和“value”

(?<=is).*(?=value)

②、想要获取想要获取"is" 和“value”之间的内容包括“is”和“value”

is(.*?)value

需求:

写正则表达式:
提取出一段字符串中所有如下部分:
以              'Subject': ' 开头
紧接着以第一个   ',           结尾
正则表达式为:

(?<='Subject': ').*?(?=',)

如果是

(?<='Subject': ').*(?=',)这种匹配出来的就只有一个了,加一个?

相关文章:

  • HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.
  • urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:833)
  • Mac下Chromedriver存放位置
  • 解决 Cannot open pip-script.py
  • Python安装docx库
  • Windows下Chromedriver存放位置
  • Python中str跟int的转换
  • Python同步遍历多个列表
  • Python3.6+selenium+xlwt爬取邮箱内容下载到Excel
  • python3 Manager 安装不成功
  • JQuery中 Uncaught ReferenceError: $ is not defined
  • Python中unittest.main(verbosity=2)
  • Windows net start mysql 服务名无效
  • pymysql.err.InternalError: (1364, Field 'id' doesn't have a default value)
  • selenium.common.exceptions.WebDriverException: Message: unknown error: unknown sessionId
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • const let
  • ES6之路之模块详解
  • jdbc就是这么简单
  • NSTimer学习笔记
  • Redis字符串类型内部编码剖析
  • spring-boot List转Page
  • Vue 动态创建 component
  • vue-cli在webpack的配置文件探究
  • 从零开始学习部署
  • 前端技术周刊 2019-01-14:客户端存储
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 试着探索高并发下的系统架构面貌
  • 算法-图和图算法
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 系统认识JavaScript正则表达式
  • 学习ES6 变量的解构赋值
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • (1)虚拟机的安装与使用,linux系统安装
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (23)Linux的软硬连接
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (C语言)二分查找 超详细
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (十三)Maven插件解析运行机制
  • (正则)提取页面里的img标签
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • .form文件_一篇文章学会文件上传
  • .gitignore文件_Git:.gitignore
  • .NET Core引入性能分析引导优化
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • /bin/bash^M: bad interpreter: No such file ordirectory