正则表达式匹配数字中具有最小长度的偶数个数字
Regex Matching even number of digits in a number with minimum length
我正在尝试构建一个适用于以下两个示例的正则表达式:
示例 1。202101310000-daily
示例 2. my_merchant_df_20210129
条件是:
- 字符串甚至没有。位数(6 位、8 位、10 位等)。
- 字符串在一组中包含至少 6 个数字。
- 字符串中数字分组的位置无关紧要。
我是正则表达式:[0-9]+
正在为 202101310000-daily
工作,但我无法创建满足这两个示例的正则表达式。
基本上对于我的用例,有些文件组的日期格式应为 yyyymd
或 yyyymmdd
或 yyyymmddHHMMSS
。我需要过滤掉文件名中任何位置具有这种格式的文件
正则表达式。
您可以重复 3 组或更多组 2 位数字,并使用否定环视断言匹配的左右两侧没有数字。
(?<!\d)(?:\d\d){3,}(?!\d)
(?<!\d)
直接向左断言没有数字
(?:\d\d){3,}
重复匹配 2 位数字 3 次或更多次以匹配 6 位数字、8 位数字等..
(?!\d)
直接向右断言没有数字
在Java
String regex = "(?<!\d)(?:\d\d){3,}(?!\d)";
为了让它更具体一点,您可以从匹配年份的 19 或 20 开始,然后重复 2 次或更多次 2 位数字组,或者您可以使用交替来匹配所有 exact patterns .
(?<!\d)(?:19|20)(?:\d{2}){2,}(?!\d)
我正在尝试构建一个适用于以下两个示例的正则表达式:
示例 1。202101310000-daily
示例 2. my_merchant_df_20210129
条件是:
- 字符串甚至没有。位数(6 位、8 位、10 位等)。
- 字符串在一组中包含至少 6 个数字。
- 字符串中数字分组的位置无关紧要。
我是正则表达式:[0-9]+
正在为 202101310000-daily
工作,但我无法创建满足这两个示例的正则表达式。
基本上对于我的用例,有些文件组的日期格式应为 yyyymd
或 yyyymmdd
或 yyyymmddHHMMSS
。我需要过滤掉文件名中任何位置具有这种格式的文件
正则表达式。
您可以重复 3 组或更多组 2 位数字,并使用否定环视断言匹配的左右两侧没有数字。
(?<!\d)(?:\d\d){3,}(?!\d)
(?<!\d)
直接向左断言没有数字(?:\d\d){3,}
重复匹配 2 位数字 3 次或更多次以匹配 6 位数字、8 位数字等..(?!\d)
直接向右断言没有数字
在Java
String regex = "(?<!\d)(?:\d\d){3,}(?!\d)";
为了让它更具体一点,您可以从匹配年份的 19 或 20 开始,然后重复 2 次或更多次 2 位数字组,或者您可以使用交替来匹配所有 exact patterns .
(?<!\d)(?:19|20)(?:\d{2}){2,}(?!\d)