mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-07-21 15:09:48 +08:00
修复ReUtil.replaceAll替换变量错误问题
This commit is contained in:
@@ -16,36 +16,36 @@ public class ReUtilTest {
|
||||
|
||||
@Test
|
||||
public void getTest() {
|
||||
String resultGet = ReUtil.get("\\w{2}", content, 0);
|
||||
final String resultGet = ReUtil.get("\\w{2}", content, 0);
|
||||
Assert.assertEquals("ZZ", resultGet);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void extractMultiTest() {
|
||||
// 抽取多个分组然后把它们拼接起来
|
||||
String resultExtractMulti = ReUtil.extractMulti("(\\w)aa(\\w)", content, "$1-$2");
|
||||
final String resultExtractMulti = ReUtil.extractMulti("(\\w)aa(\\w)", content, "$1-$2");
|
||||
Assert.assertEquals("Z-a", resultExtractMulti);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void extractMultiTest2() {
|
||||
// 抽取多个分组然后把它们拼接起来
|
||||
String resultExtractMulti = ReUtil.extractMulti("(\\w)(\\w)(\\w)(\\w)(\\w)(\\w)(\\w)(\\w)(\\w)(\\w)", content, "$1-$2-$3-$4-$5-$6-$7-$8-$9-$10");
|
||||
final String resultExtractMulti = ReUtil.extractMulti("(\\w)(\\w)(\\w)(\\w)(\\w)(\\w)(\\w)(\\w)(\\w)(\\w)", content, "$1-$2-$3-$4-$5-$6-$7-$8-$9-$10");
|
||||
Assert.assertEquals("Z-Z-Z-a-a-a-b-b-b-c", resultExtractMulti);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void delFirstTest() {
|
||||
// 删除第一个匹配到的内容
|
||||
String resultDelFirst = ReUtil.delFirst("(\\w)aa(\\w)", content);
|
||||
final String resultDelFirst = ReUtil.delFirst("(\\w)aa(\\w)", content);
|
||||
Assert.assertEquals("ZZbbbccc中文1234", resultDelFirst);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void delLastTest(){
|
||||
String blank = "";
|
||||
String word = "180公斤";
|
||||
String sentence = "10.商品KLS100021型号xxl适合身高180体重130斤的用户";
|
||||
final String blank = "";
|
||||
final String word = "180公斤";
|
||||
final String sentence = "10.商品KLS100021型号xxl适合身高180体重130斤的用户";
|
||||
//空字符串兼容
|
||||
Assert.assertEquals(blank,ReUtil.delLast("\\d+", blank));
|
||||
Assert.assertEquals(blank,ReUtil.delLast(PatternPool.NUMBERS, blank));
|
||||
@@ -71,30 +71,30 @@ public class ReUtilTest {
|
||||
@Test
|
||||
public void delAllTest() {
|
||||
// 删除所有匹配到的内容
|
||||
String content = "发东方大厦eee![images]http://abc.com/2.gpg]好机会eee![images]http://abc.com/2.gpg]好机会";
|
||||
String resultDelAll = ReUtil.delAll("!\\[images\\][^\\u4e00-\\u9fa5\\\\s]*", content);
|
||||
final String content = "发东方大厦eee![images]http://abc.com/2.gpg]好机会eee![images]http://abc.com/2.gpg]好机会";
|
||||
final String resultDelAll = ReUtil.delAll("!\\[images\\][^\\u4e00-\\u9fa5\\\\s]*", content);
|
||||
Assert.assertEquals("发东方大厦eee好机会eee好机会", resultDelAll);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void findAllTest() {
|
||||
// 查找所有匹配文本
|
||||
List<String> resultFindAll = ReUtil.findAll("\\w{2}", content, 0, new ArrayList<>());
|
||||
ArrayList<String> expected = CollectionUtil.newArrayList("ZZ", "Za", "aa", "bb", "bc", "cc", "12", "34");
|
||||
final List<String> resultFindAll = ReUtil.findAll("\\w{2}", content, 0, new ArrayList<>());
|
||||
final ArrayList<String> expected = CollectionUtil.newArrayList("ZZ", "Za", "aa", "bb", "bc", "cc", "12", "34");
|
||||
Assert.assertEquals(expected, resultFindAll);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getFirstNumberTest() {
|
||||
// 找到匹配的第一个数字
|
||||
Integer resultGetFirstNumber = ReUtil.getFirstNumber(content);
|
||||
final Integer resultGetFirstNumber = ReUtil.getFirstNumber(content);
|
||||
Assert.assertEquals(Integer.valueOf(1234), resultGetFirstNumber);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isMatchTest() {
|
||||
// 给定字符串是否匹配给定正则
|
||||
boolean isMatch = ReUtil.isMatch("\\w+[\u4E00-\u9FFF]+\\d+", content);
|
||||
final boolean isMatch = ReUtil.isMatch("\\w+[\u4E00-\u9FFF]+\\d+", content);
|
||||
Assert.assertTrue(isMatch);
|
||||
}
|
||||
|
||||
@@ -102,20 +102,20 @@ public class ReUtilTest {
|
||||
public void replaceAllTest() {
|
||||
//通过正则查找到字符串,然后把匹配到的字符串加入到replacementTemplate中,$1表示分组1的字符串
|
||||
//此处把1234替换为 ->1234<-
|
||||
String replaceAll = ReUtil.replaceAll(content, "(\\d+)", "->$1<-");
|
||||
final String replaceAll = ReUtil.replaceAll(content, "(\\d+)", "->$1<-");
|
||||
Assert.assertEquals("ZZZaaabbbccc中文->1234<-", replaceAll);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void replaceAllTest2() {
|
||||
//此处把1234替换为 ->1234<-
|
||||
String replaceAll = ReUtil.replaceAll(this.content, "(\\d+)", parameters -> "->" + parameters.group(1) + "<-");
|
||||
final String replaceAll = ReUtil.replaceAll(this.content, "(\\d+)", parameters -> "->" + parameters.group(1) + "<-");
|
||||
Assert.assertEquals("ZZZaaabbbccc中文->1234<-", replaceAll);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void replaceTest() {
|
||||
String str = "AAABBCCCBBDDDBB";
|
||||
final String str = "AAABBCCCBBDDDBB";
|
||||
String replace = StrUtil.replace(str, 0, "BB", "22", false);
|
||||
Assert.assertEquals("AAA22CCC22DDD22", replace);
|
||||
|
||||
@@ -138,22 +138,22 @@ public class ReUtilTest {
|
||||
@Test
|
||||
public void escapeTest() {
|
||||
//转义给定字符串,为正则相关的特殊符号转义
|
||||
String escape = ReUtil.escape("我有个$符号{}");
|
||||
final String escape = ReUtil.escape("我有个$符号{}");
|
||||
Assert.assertEquals("我有个\\$符号\\{\\}", escape);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void escapeTest2(){
|
||||
String str = "a[bbbc";
|
||||
String re = "[";
|
||||
final String str = "a[bbbc";
|
||||
final String re = "[";
|
||||
final String s = ReUtil.get(ReUtil.escape(re), str, 0);
|
||||
Assert.assertEquals("[", s);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void escapeTest3(){
|
||||
String context = "{prefix}_";
|
||||
String regex = "{prefix}_";
|
||||
final String context = "{prefix}_";
|
||||
final String regex = "{prefix}_";
|
||||
final boolean b = ReUtil.isMatch(ReUtil.escape(regex), context);
|
||||
Assert.assertTrue(b);
|
||||
}
|
||||
@@ -161,7 +161,7 @@ public class ReUtilTest {
|
||||
@Test
|
||||
public void getAllGroupsTest() {
|
||||
//转义给定字符串,为正则相关的特殊符号转义
|
||||
Pattern pattern = Pattern.compile("(\\d+)-(\\d+)-(\\d+)");
|
||||
final Pattern pattern = Pattern.compile("(\\d+)-(\\d+)-(\\d+)");
|
||||
List<String> allGroups = ReUtil.getAllGroups(pattern, "192-168-1-1");
|
||||
Assert.assertEquals("192-168-1", allGroups.get(0));
|
||||
Assert.assertEquals("192", allGroups.get(1));
|
||||
@@ -183,23 +183,31 @@ public class ReUtilTest {
|
||||
|
||||
@Test
|
||||
public void getByGroupNameTest() {
|
||||
String content = "2021-10-11";
|
||||
String regex = "(?<year>\\d+)-(?<month>\\d+)-(?<day>\\d+)";
|
||||
String year = ReUtil.get(regex, content, "year");
|
||||
final String content = "2021-10-11";
|
||||
final String regex = "(?<year>\\d+)-(?<month>\\d+)-(?<day>\\d+)";
|
||||
final String year = ReUtil.get(regex, content, "year");
|
||||
Assert.assertEquals("2021", year);
|
||||
String month = ReUtil.get(regex, content, "month");
|
||||
final String month = ReUtil.get(regex, content, "month");
|
||||
Assert.assertEquals("10", month);
|
||||
String day = ReUtil.get(regex, content, "day");
|
||||
final String day = ReUtil.get(regex, content, "day");
|
||||
Assert.assertEquals("11", day);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getAllGroupNamesTest() {
|
||||
String content = "2021-10-11";
|
||||
String regex = "(?<year>\\d+)-(?<month>\\d+)-(?<day>\\d+)";
|
||||
Map<String, String> map = ReUtil.getAllGroupNames(PatternPool.get(regex, Pattern.DOTALL), content);
|
||||
final String content = "2021-10-11";
|
||||
final String regex = "(?<year>\\d+)-(?<month>\\d+)-(?<day>\\d+)";
|
||||
final Map<String, String> map = ReUtil.getAllGroupNames(PatternPool.get(regex, Pattern.DOTALL), content);
|
||||
Assert.assertEquals(map.get("year"), "2021");
|
||||
Assert.assertEquals(map.get("month"), "10");
|
||||
Assert.assertEquals(map.get("day"), "11");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void issuesI5TQDRTest(){
|
||||
final Pattern patternIp = Pattern.compile("((2(5[0-5]|[0-4]\\d))|[0-1]?\\d{1,2})\\.((2(5[0-5]|[0-4]\\d))|[0-1]?\\d{1,2})\\.((2(5[0-5]|[0-4]\\d))"
|
||||
+ "|[0-1]?\\d{1,2})\\.((2(5[0-5]|[0-4]\\d))|[0-1]?\\d{1,2})");
|
||||
final String s = ReUtil.replaceAll("1.2.3.4", patternIp, "$1.**.**.$10");
|
||||
Assert.assertEquals("1.**.**.4", s);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user