Java 正则获取两个字母之间的内容(最新推荐)
<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">Java 正则获取两个字母之间的内容</a></li><li><a href="#_label1">正则匹配两个字符之间的内容</a></li><ul class="second_class_ul"><li><a href="#_lab2_1_0">表达式: (?<=A).*?(?=B)</a></li><li><a href="#_lab2_1_1">表达式: A.*?(?=B)</a></li><li><a href="#_lab2_1_2">表达式: A.*?B</a></li></ul><li><a href="#_label2">java 正则表达式截取两个字符串之间的内容</a></li><ul class="second_class_ul"></ul></ul></div><p class="maodian"><a name="_label0"></a></p><h2>Java 正则获取两个字母之间的内容</h2><p class="maodian"><a name="_label1"></a></p><h2>正则匹配两个字符之间的内容</h2>
<p class="maodian"><a name="_lab2_1_0"></a></p><h3>表达式: (?<=A).*?(?=B)</h3>
<p>匹配两个字符串A与B之间的内容,不包含A和B</p>
<div class="jb51code"><pre class="brush:plain;">// 匹配规则
String reg = "(?<=E).*?(?=U)";
String temp = "qwErtyUio";
Pattern pattern = Pattern.compile(reg);
Matcher matcher = pattern.matcher(temp);
if( matcher.find() ){
System.out.println(matcher.group());
}
//打印内容 rty</pre></div>
<p class="maodian"><a name="_lab2_1_1"></a></p><h3>表达式: A.*?(?=B)</h3>
<p>匹配两个字符串A与B之间的内容,包含B,不包含A</p>
<div class="jb51code"><pre class="brush:plain;">// 匹配规则
String reg = "W.*?(?=H)";
String temp = "eWiowedjewHw";
Pattern pattern = Pattern.compile(reg);
Matcher matcher = pattern.matcher(temp);
if( matcher.find() ){
System.out.println(matcher.group());
}
//打印内容 iowedjewH</pre></div>
<p class="maodian"><a name="_lab2_1_2"></a></p><h3>表达式: A.*?B</h3>
<p>匹配两个字符串A与B之间的内容,包含A和B</p>
<div class="jb51code"><pre class="brush:plain;">// 匹配规则
String reg = "A.*?B";
String temp = "aAabcBc";
Pattern pattern = Pattern.compile(reg);
Matcher matcher = pattern.matcher(temp);
if( matcher.find() ){
System.out.println(matcher.group());
}
//打印内容 AabcB</pre></div>
<p>注: “ . ”表示任意字符,“ ? ”表示匹配一次或多次,“ ?<=A ” 表示以A开头,“ ?=B ”表示以B结尾</p>
<p class="maodian"><a name="_label2"></a></p><h2>java 正则表达式截取两个字符串之间的内容</h2>
<p>有一个需求,需要截取字符串中,两个字符串之间的内容。</p>
<p>比如字符串:啊啊啊标题@多项选择题描述@呵呵呵呵</p>
<p>现在需要截取【标题@】和【描述@】之间的字符串,使用正则表达式的方式截取,代码如下</p>
<div class="jb51code"><pre class="brush:java;"> String text3 = "啊啊啊标题@多项选择题描述@呵呵呵呵";
String reg3 = "(?<=标题@)[\\s\\S]*(?=描述@)";
Pattern p3 = Pattern.compile(reg3);
Matcher m3 = p3.matcher(text3);
if(m3.find()){
System.out.println(m3.group());
}</pre></div>
<p>输出结果:</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202307/2023072411021440.png" /></p>
<div class="jb51code"><pre class="brush:java;"> String reg3 = "(?<=标题@)[\\s\\S]*(?=描述@)";</pre></div>
<p>这个正则表达式使用了零宽断言,匹配标题@开头,并且描述@结尾的字符串,并且不包括这两个字符串。[\\s\\S]是匹配任何空或者非空的字符,*表示匹配0次或者多次。</p>
<p>如果需要保留这个开头的字符串和结尾的字符串,那么正则表达式可以改为这样:</p>
<div class="jb51code"><pre class="brush:java;">String reg3 = "标题@[\\s\\S]*描述@";</pre></div>
<p>改为这样后,输出内容就变为了下面这样,会包含前面和后面的字符串:</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202307/2023072411021441.png" /></p>
頁:
[1]