正则表达式-匹配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());
	}

}

或者使用

?=、?!、?<= ?

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

\s

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

\S

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

字符串"my name iszhangvalue  hello  world"

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

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

正则表达式-匹配A和B之间字符串_第1张图片

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

is(.*?)value

正则表达式-匹配A和B之间字符串_第2张图片

需求:

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

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

正则表达式-匹配A和B之间字符串_第3张图片

如果是

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

正则表达式-匹配A和B之间字符串_第4张图片

你可能感兴趣的:(Java)