正则表达式零宽断言
2023-12-18 09:40:30
?<= 不包含左边值
(?<=exp) 也叫零宽度正回顾后发断言,它断言自身出现的位置的前面能匹配表达式exp
例如:(?<=\bdanc)\w+\b 查找 I’m dancing,它会匹配 ing
?= 不包含右边值
(?=exp) 也叫零宽度正预测先行断言,它断言自身出现的位置的后面能匹配表达式exp
例如:\b\w+(?=ing\b) 查找 I’m dancing,它会匹配 danc
例子
/**
* 这需要运用零宽断言<br>
* ?<=不包含左边值<br>
* ?=不包含右边值<br>
* \b 匹配一个字边界,即字与空格间的位置<br>
* (?=exp) 也叫零宽度正预测先行断言,它断言自身出现的位置的后面能匹配表达式exp 例如:\b\w+(?=ing\b) 查找 I'm dancing,它会匹配 danc <br>
* (?<=exp) 也叫零宽度正回顾后发断言,它断言自身出现的位置的前面能匹配表达式exp 例如:(?<=\bdanc)\w+\b 查找 I'm dancing,它会匹配 ing <br>
*/
public class RegexUtil {
/**
* 正则表达式匹配文本内容
* @param text 需要查找的内容
* @param regex 配置正则表达式
* @return 匹配到的内容列表
*/
public static List<String> getList(String text, String regex) {
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(text);
List<String> list = new ArrayList<>();
while (matcher.find()) {
String group = matcher.group();
list.add(group);
}
return list;
}
}
匹配 一个ing结尾的单词
@Test
public void test01() {
String text = "Pingpong, I'm singing while you're dancing.";
String regex = "\\b\\w+(?=ing\\b)ing";
List<Object> targetList = Arrays.asList(new String[]{"singing", "dancing"});
Assert.isTrue(RegexUtil.getList(text, regex).equals(targetList), "两个List应该相等");
}
匹配 一个sing开头的单词
@Test
public void test02() {
String text = "Pingpong, I'm singing while you're dancing.";
String regex = "sing(?<=\\bsing)\\w+\\b";
List<Object> targetList = Arrays.asList(new String[]{"singing"});
Assert.isTrue(RegexUtil.getList(text, regex).equals(targetList), "两个List应该相等");
}
匹配 ()里面的内容
@Test
// 匹配 ()里面的内容
public void test03() {
String text = "北京市(海定区)(朝阳区)(西城区)";
String regex = "(?<=\\().*?(?=\\))";
List<Object> targetList = Arrays.asList(new String[]{"海定区", "朝阳区", "西城区"});
Assert.isTrue(RegexUtil.getList(text, regex).equals(targetList), "两个List应该相等");
}
匹配 里面的内容
@Test
public void test04() {
String text = "<string>小帅</string>";
String regex = "(?<=\\<string\\>).*?(?=\\</string\\>)";
List<Object> targetList = Arrays.asList(new String[]{"小帅"});
Assert.isTrue(RegexUtil.getList(text, regex).equals(targetList), "两个List应该相等");
}
文章来源:https://blog.csdn.net/qq_26264237/article/details/135002222
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!