Package org.miaixz.bus.core.xyz
Class PatternKit
java.lang.Object
org.miaixz.bus.core.center.regex.RegexValidator
org.miaixz.bus.core.xyz.PatternKit
正则相关工具类 常用正则请见
Validator- Since:
- Java 17+
- Author:
- Kimi Liu
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic intcount(String regex, CharSequence content) 计算指定字符串中,匹配pattern的个数static intcount(Pattern pattern, CharSequence content) 计算指定字符串中,匹配pattern的个数static StringdelAll(String regex, CharSequence content) 删除匹配的全部内容static StringdelAll(Pattern pattern, CharSequence content) 删除匹配的全部内容static StringdelFirst(String regex, CharSequence content) 删除匹配的第一个内容static StringdelFirst(Pattern pattern, CharSequence content) 删除匹配的第一个内容static StringdelLast(String regex, CharSequence text) 删除匹配的最后一个内容static StringdelLast(Pattern pattern, CharSequence text) 删除匹配的最后一个内容static StringdelPre(String regex, CharSequence content) 删除正则匹配到的内容之前的字符 如果没有找到,则返回原文static StringdelPre(Pattern pattern, CharSequence content) 删除正则匹配到的内容之前的字符 如果没有找到,则返回原文static Stringescape(char c) 转义字符,将正则的关键字转义static Stringescape(CharSequence content) 转义字符串,将正则的关键字转义static StringextractMulti(String regex, CharSequence content, String template) 从content中匹配出多个值并根据template生成新的字符串 匹配结束后会删除匹配内容之前的内容(包括匹配内容) 例如: content 2013年5月 pattern (.*?)年(.*?)月 template: $1-$2 return 2013-5static StringextractMulti(Pattern pattern, CharSequence content, String template) 从content中匹配出多个值并根据template生成新的字符串 例如: content 2013年5月 pattern (.*?)年(.*?)月 template: $1-$2 return 2013-5static StringextractMultiAndDelPre(String regex, Mutable<CharSequence> contentHolder, String template) 从content中匹配出多个值并根据template生成新的字符串 例如: content 2013年5月 pattern (.*?)年(.*?)月 template: $1-$2 return 2013-5static StringextractMultiAndDelPre(Pattern pattern, Mutable<CharSequence> contentHolder, String template) 从content中匹配出多个值并根据template生成新的字符串 匹配结束后会删除匹配内容之前的内容(包括匹配内容) 例如: content 2013年5月 pattern (.*?)年(.*?)月 template: $1-$2 return 2013-5findAll(String regex, CharSequence content, int group) 取得内容中匹配的所有结果static <T extends Collection<String>>
TfindAll(String regex, CharSequence content, int group, T collection) 取得内容中匹配的所有结果findAll(Pattern pattern, CharSequence content, int group) 取得内容中匹配的所有结果static <T extends Collection<String>>
TfindAll(Pattern pattern, CharSequence content, int group, T collection) 取得内容中匹配的所有结果static voidfindAll(Pattern pattern, CharSequence content, Consumer<Matcher> consumer) 取得内容中匹配的所有结果,使用Consumer完成匹配结果处理findAllGroup0(String regex, CharSequence content) 取得内容中匹配的所有结果,获得匹配的所有结果中正则对应分组0的内容findAllGroup0(Pattern pattern, CharSequence content) 取得内容中匹配的所有结果,获得匹配的所有结果中正则对应分组0的内容findAllGroup1(String regex, CharSequence content) 取得内容中匹配的所有结果,获得匹配的所有结果中正则对应分组1的内容findAllGroup1(Pattern pattern, CharSequence content) 取得内容中匹配的所有结果,获得匹配的所有结果中正则对应分组1的内容static Stringget(String regex, CharSequence content, int groupIndex) 获得匹配的字符串static Stringget(String regex, CharSequence content, String groupName) 获得匹配的字符串static Stringget(Pattern pattern, CharSequence content, int groupIndex) 获得匹配的字符串,对应分组0表示整个匹配内容,1表示第一个括号分组内容,依次类推static Stringget(Pattern pattern, CharSequence content, String groupName) 获得匹配的字符串static voidget(Pattern pattern, CharSequence content, Consumer<Matcher> consumer) 在给定字符串中查找给定规则的字符,如果找到则使用Consumer处理之 如果内容中有多个匹配项,则只处理找到的第一个结果。getAllGroupNames(Pattern pattern, CharSequence content) 根据给定正则查找字符串中的匹配项,返回所有匹配的分组名对应分组值getAllGroups(Pattern pattern, CharSequence content) 获得匹配的字符串匹配到的所有分组getAllGroups(Pattern pattern, CharSequence content, boolean withGroup0) 获得匹配的字符串匹配到的所有分组getAllGroups(Pattern pattern, CharSequence content, boolean withGroup0, boolean findAll) 获得匹配的字符串匹配到的所有分组static IntegergetFirstNumber(CharSequence stringWithNumber) 从字符串中获得第一个整数static StringgetGroup0(String regex, CharSequence content) 获得匹配的字符串,获得正则中分组0的内容static StringgetGroup0(Pattern pattern, CharSequence content) 获得匹配的字符串,获得正则中分组0的内容static StringgetGroup1(String regex, CharSequence content) 获得匹配的字符串,获得正则中分组1的内容static StringgetGroup1(Pattern pattern, CharSequence content) 获得匹配的字符串,获得正则中分组1的内容static String根据提供的匹配器和组名尝试获取匹配的字符串 此方法旨在方便地从匹配器中提取指定名称的组匹配的字符串。如果指定的组不存在,则通过捕获异常并返回null来优雅地处理错误。static MatchResultindexOf(String regex, CharSequence content) 找到指定正则匹配到字符串的开始位置static MatchResultindexOf(Pattern pattern, CharSequence content) 找到指定模式匹配到字符串的开始位置static MatchResultlastIndexOf(String regex, CharSequence content) 找到指定正则匹配到第一个字符串的位置static MatchResultlastIndexOf(Pattern pattern, CharSequence content) 找到指定模式匹配到最后一个字符串的位置static StringreplaceAll(CharSequence content, String regex, String replacementTemplate) 正则替换指定值 通过正则查找到字符串,然后把匹配到的字符串加入到replacementTemplate中,$1表示分组1的字符串 例如:原字符串是:中文1234,我想把1234换成(1234),则可以:static StringreplaceAll(CharSequence text, String regex, FunctionX<Matcher, String> replaceFun) 替换所有正则匹配的文本,并使用自定义函数决定如何替换 replaceFun可以通过Matcher提取出匹配到的内容的不同部分,然后经过重新处理、组装变成新的内容放回原位。static StringreplaceAll(CharSequence content, Pattern pattern, String replacementTemplate) 正则替换指定值 通过正则查找到字符串,然后把匹配到的字符串加入到replacementTemplate中,$1表示分组1的字符串static StringreplaceAll(CharSequence text, Pattern pattern, FunctionX<Matcher, String> replaceFun) 替换所有正则匹配的文本,并使用自定义函数决定如何替换 replaceFun可以通过Matcher提取出匹配到的内容的不同部分,然后经过重新处理、组装变成新的内容放回原位。static StringreplaceFirst(Pattern pattern, CharSequence content, String replacement) 替换匹配的第一个内容Methods inherited from class org.miaixz.bus.core.center.regex.RegexValidator
contains, contains, isMatch, isMatch
-
Field Details
-
RE_KEYS
正则中需要被转义的关键字
-
-
Constructor Details
-
PatternKit
public PatternKit()
-
-
Method Details
-
getGroup0
获得匹配的字符串,获得正则中分组0的内容- Parameters:
regex- 匹配的正则content- 被匹配的内容- Returns:
- 匹配后得到的字符串,未匹配返回null
-
getGroup1
获得匹配的字符串,获得正则中分组1的内容- Parameters:
regex- 匹配的正则content- 被匹配的内容- Returns:
- 匹配后得到的字符串,未匹配返回null
-
get
获得匹配的字符串- Parameters:
regex- 匹配的正则content- 被匹配的内容groupIndex- 匹配正则的分组序号- Returns:
- 匹配后得到的字符串,未匹配返回null
-
get
获得匹配的字符串- Parameters:
regex- 匹配的正则content- 被匹配的内容groupName- 匹配正则的分组名称- Returns:
- 匹配后得到的字符串,未匹配返回null
-
getGroup0
获得匹配的字符串,获得正则中分组0的内容- Parameters:
pattern- 编译后的正则模式content- 被匹配的内容- Returns:
- 匹配后得到的字符串,未匹配返回null
-
getGroup1
获得匹配的字符串,获得正则中分组1的内容- Parameters:
pattern- 编译后的正则模式content- 被匹配的内容- Returns:
- 匹配后得到的字符串,未匹配返回null
-
get
获得匹配的字符串,对应分组0表示整个匹配内容,1表示第一个括号分组内容,依次类推- Parameters:
pattern- 编译后的正则模式content- 被匹配的内容groupIndex- 匹配正则的分组序号,0表示整个匹配内容,1表示第一个括号分组内容,依次类推- Returns:
- 匹配后得到的字符串,未匹配返回null
-
get
获得匹配的字符串- Parameters:
pattern- 匹配的正则content- 被匹配的内容groupName- 匹配正则的分组名称- Returns:
- 匹配后得到的字符串,未匹配返回null
-
get
在给定字符串中查找给定规则的字符,如果找到则使用Consumer处理之 如果内容中有多个匹配项,则只处理找到的第一个结果。- Parameters:
pattern- 匹配的正则content- 被匹配的内容consumer- 匹配到的内容处理器
-
getAllGroups
获得匹配的字符串匹配到的所有分组- Parameters:
pattern- 编译后的正则模式content- 被匹配的内容- Returns:
- 匹配后得到的字符串数组,按照分组顺序依次列出,未匹配到返回空列表,任何一个参数为null返回null
-
getAllGroups
获得匹配的字符串匹配到的所有分组- Parameters:
pattern- 编译后的正则模式content- 被匹配的内容withGroup0- 是否包括分组0,此分组表示全匹配的信息- Returns:
- 匹配后得到的字符串数组,按照分组顺序依次列出,未匹配到返回空列表,任何一个参数为null返回null
-
getAllGroups
public static List<String> getAllGroups(Pattern pattern, CharSequence content, boolean withGroup0, boolean findAll) 获得匹配的字符串匹配到的所有分组- Parameters:
pattern- 编译后的正则模式content- 被匹配的内容withGroup0- 是否包括分组0,此分组表示全匹配的信息findAll- 是否查找所有匹配到的内容,false表示只读取第一个匹配到的内容- Returns:
- 匹配后得到的字符串数组,按照分组顺序依次列出,未匹配到返回空列表,任何一个参数为null返回null
-
getAllGroupNames
根据给定正则查找字符串中的匹配项,返回所有匹配的分组名对应分组值pattern: (?<year>\\d+)-(?<month>\\d+)-(?<day>\\d+) content: 2021-10-11 result : year: 2021, month: 10, day: 11
- Parameters:
pattern- 匹配的正则content- 被匹配的内容- Returns:
- 命名捕获组,key为分组名,value为对应值
-
extractMulti
从content中匹配出多个值并根据template生成新的字符串 例如: content 2013年5月 pattern (.*?)年(.*?)月 template: $1-$2 return 2013-5- Parameters:
pattern- 匹配正则content- 被匹配的内容template- 生成内容模板,变量 $1 表示group1的内容,以此类推- Returns:
- 新字符串
-
extractMulti
从content中匹配出多个值并根据template生成新的字符串 匹配结束后会删除匹配内容之前的内容(包括匹配内容) 例如: content 2013年5月 pattern (.*?)年(.*?)月 template: $1-$2 return 2013-5- Parameters:
regex- 匹配正则字符串content- 被匹配的内容template- 生成内容模板,变量 $1 表示group1的内容,以此类推- Returns:
- 按照template拼接后的字符串
-
extractMultiAndDelPre
public static String extractMultiAndDelPre(Pattern pattern, Mutable<CharSequence> contentHolder, String template) 从content中匹配出多个值并根据template生成新的字符串 匹配结束后会删除匹配内容之前的内容(包括匹配内容) 例如: content 2013年5月 pattern (.*?)年(.*?)月 template: $1-$2 return 2013-5- Parameters:
pattern- 匹配正则contentHolder- 被匹配的内容的Holder,value为内容正文,经过这个方法的原文将被去掉匹配之前的内容template- 生成内容模板,变量 $1 表示group1的内容,以此类推- Returns:
- 新字符串
-
extractMultiAndDelPre
public static String extractMultiAndDelPre(String regex, Mutable<CharSequence> contentHolder, String template) 从content中匹配出多个值并根据template生成新的字符串 例如: content 2013年5月 pattern (.*?)年(.*?)月 template: $1-$2 return 2013-5- Parameters:
regex- 匹配正则字符串contentHolder- 被匹配的内容的Holder,value为内容正文,经过这个方法的原文将被去掉匹配之前的内容template- 生成内容模板,变量 $1 表示group1的内容,以此类推- Returns:
- 按照template拼接后的字符串
-
delFirst
删除匹配的第一个内容- Parameters:
regex- 正则content- 被匹配的内容- Returns:
- 删除后剩余的内容
-
delFirst
删除匹配的第一个内容- Parameters:
pattern- 正则content- 被匹配的内容- Returns:
- 删除后剩余的内容
-
replaceFirst
替换匹配的第一个内容- Parameters:
pattern- 正则content- 被匹配的内容replacement- 替换的内容- Returns:
- 替换后剩余的内容
-
delLast
删除匹配的最后一个内容- Parameters:
regex- 正则text- 被匹配的内容- Returns:
- 删除后剩余的内容
-
delLast
删除匹配的最后一个内容- Parameters:
pattern- 正则text- 被匹配的内容- Returns:
- 删除后剩余的内容
-
delAll
删除匹配的全部内容- Parameters:
regex- 正则content- 被匹配的内容- Returns:
- 删除后剩余的内容
-
delAll
删除匹配的全部内容- Parameters:
pattern- 正则content- 被匹配的内容- Returns:
- 删除后剩余的内容
-
delPre
删除正则匹配到的内容之前的字符 如果没有找到,则返回原文- Parameters:
regex- 定位正则content- 被查找的内容- Returns:
- 删除前缀后的新内容
-
delPre
删除正则匹配到的内容之前的字符 如果没有找到,则返回原文- Parameters:
pattern- 定位正则模式content- 被查找的内容- Returns:
- 删除前缀后的新内容
-
findAllGroup0
取得内容中匹配的所有结果,获得匹配的所有结果中正则对应分组0的内容- Parameters:
regex- 正则content- 被查找的内容- Returns:
- 结果列表
-
findAllGroup1
取得内容中匹配的所有结果,获得匹配的所有结果中正则对应分组1的内容- Parameters:
regex- 正则content- 被查找的内容- Returns:
- 结果列表
-
findAll
取得内容中匹配的所有结果- Parameters:
regex- 正则content- 被查找的内容group- 正则的分组- Returns:
- 结果列表
-
findAll
public static <T extends Collection<String>> T findAll(String regex, CharSequence content, int group, T collection) 取得内容中匹配的所有结果- Type Parameters:
T- 集合类型- Parameters:
regex- 正则content- 被查找的内容group- 正则的分组collection- 返回的集合类型- Returns:
- 结果集
-
findAllGroup0
取得内容中匹配的所有结果,获得匹配的所有结果中正则对应分组0的内容- Parameters:
pattern- 编译后的正则模式content- 被查找的内容- Returns:
- 结果列表
-
findAllGroup1
取得内容中匹配的所有结果,获得匹配的所有结果中正则对应分组1的内容- Parameters:
pattern- 编译后的正则模式content- 被查找的内容- Returns:
- 结果列表
-
findAll
取得内容中匹配的所有结果- Parameters:
pattern- 编译后的正则模式content- 被查找的内容group- 正则的分组- Returns:
- 结果列表
-
findAll
public static <T extends Collection<String>> T findAll(Pattern pattern, CharSequence content, int group, T collection) 取得内容中匹配的所有结果- Type Parameters:
T- 集合类型- Parameters:
pattern- 编译后的正则模式content- 被查找的内容group- 正则的分组collection- 返回的集合类型- Returns:
- 结果集
-
findAll
取得内容中匹配的所有结果,使用Consumer完成匹配结果处理- Parameters:
pattern- 编译后的正则模式content- 被查找的内容consumer- 匹配结果处理函数
-
count
计算指定字符串中,匹配pattern的个数- Parameters:
regex- 正则表达式content- 被查找的内容- Returns:
- 匹配个数
-
count
计算指定字符串中,匹配pattern的个数- Parameters:
pattern- 编译后的正则模式content- 被查找的内容- Returns:
- 匹配个数
-
indexOf
找到指定正则匹配到字符串的开始位置- Parameters:
regex- 正则content- 字符串- Returns:
- 位置,
null表示未找到
-
indexOf
找到指定模式匹配到字符串的开始位置- Parameters:
pattern- 模式content- 字符串- Returns:
- 位置,
null表示未找到
-
lastIndexOf
找到指定正则匹配到第一个字符串的位置- Parameters:
regex- 正则content- 字符串- Returns:
- 位置,
null表示未找到
-
lastIndexOf
找到指定模式匹配到最后一个字符串的位置- Parameters:
pattern- 模式content- 字符串- Returns:
- 位置,
null表示未找到
-
getFirstNumber
从字符串中获得第一个整数- Parameters:
stringWithNumber- 带数字的字符串- Returns:
- 整数
-
replaceAll
正则替换指定值 通过正则查找到字符串,然后把匹配到的字符串加入到replacementTemplate中,$1表示分组1的字符串 例如:原字符串是:中文1234,我想把1234换成(1234),则可以:replaceAll("中文1234", "(\\d+)", "($1)")) 结果:中文(1234)- Parameters:
content- 文本regex- 正则replacementTemplate- 替换的文本模板,可以使用$1类似的变量提取正则匹配出的内容- Returns:
- 处理后的文本
-
replaceAll
正则替换指定值 通过正则查找到字符串,然后把匹配到的字符串加入到replacementTemplate中,$1表示分组1的字符串- Parameters:
content- 文本pattern-PatternreplacementTemplate- 替换的文本模板,可以使用$1类似的变量提取正则匹配出的内容- Returns:
- 处理后的文本
-
replaceAll
public static String replaceAll(CharSequence text, String regex, FunctionX<Matcher, String> replaceFun) 替换所有正则匹配的文本,并使用自定义函数决定如何替换 replaceFun可以通过Matcher提取出匹配到的内容的不同部分,然后经过重新处理、组装变成新的内容放回原位。replaceAll(this.content, "(\\d+)", parameters -> "-" + parameters.group(1) + "-") // 结果为:"ZZZaaabbbccc中文-1234-"
- Parameters:
text- 要替换的字符串regex- 用于匹配的正则式replaceFun- 决定如何替换的函数- Returns:
- 替换后的文本
-
replaceAll
public static String replaceAll(CharSequence text, Pattern pattern, FunctionX<Matcher, String> replaceFun) 替换所有正则匹配的文本,并使用自定义函数决定如何替换 replaceFun可以通过Matcher提取出匹配到的内容的不同部分,然后经过重新处理、组装变成新的内容放回原位。replaceAll(this.content, "(\\d+)", parameters -> "-" + parameters.group(1) + "-") // 结果为:"ZZZaaabbbccc中文-1234-"
- Parameters:
text- 要替换的字符串pattern- 用于匹配的正则式replaceFun- 决定如何替换的函数,可能被多次调用(当有多个匹配时)- Returns:
- 替换后的字符串
-
escape
转义字符,将正则的关键字转义- Parameters:
c- 字符- Returns:
- 转义后的文本
-
escape
转义字符串,将正则的关键字转义- Parameters:
content- 文本- Returns:
- 转义后的文本
-
group
根据提供的匹配器和组名尝试获取匹配的字符串 此方法旨在方便地从匹配器中提取指定名称的组匹配的字符串。如果指定的组不存在,则通过捕获异常并返回null来优雅地处理错误。- Parameters:
matcher- 匹配器对象,用于查找和匹配文本。name- 组的名称,用于指定要提取的匹配字符串的组。- Returns:
- 如果找到并成功提取了指定组的匹配字符串,则返回该字符串;如果组不存在,则返回null。
-