我有像20210215和14032020这样的连续日期字符,我正在尝试将其转换为像2021.02.15和14.03.2020这样的日期字符串
我的第一个问题是连续的字符,它是2格式类型。喜欢:
1) 20210215
2) 14032020
我的第二个问题是在不更改格式的情况下将它们转换为日期字符串。比如:
1) 2021.02.15
2) 14.03.2020
当我搜索about regex时,找不到任何模式来将上面的{20210215}连续字符示例转换为date {2021.02.15}字符串。
正如我在Dart中所描述的,转换两种格式的正确正则表达式模式是什么?
UPDATE-1:
我需要将此字符串“20210215”转换为此“2021.02.15”作为字符串而不是DateTime。我还需要将此字符串“14032020”转换为此字符串“14.03.2020”。我不想转到DateTime字符串。
更新2:这是我能找到的最好的,但是它把02天或月变成了2天。但是我需要它。
var timestampString = '13022020';//'20200213';
var re1 = RegExp(
r'^'
r'(?<year>\d{4})'
r'(?<month>\d{2})'
r'(?<day>\d{2})'
r'$',
);
var re2 = RegExp(
r'^'
r'(?<day>\d{2})'
r'(?<month>\d{2})'
r'(?<year>\d{4})'
r'$',
);
var dateTime;
var match1 = re1.firstMatch(timestampString);
if (match1 == null) {
var match2 = re2.firstMatch(timestampString);
if (match2 == null) {
//throw FormatException('Unrecognized timestamp format');
dateTime = '00.00.0000';
print('DATE_TIME: $dateTime');
} else {
var _day = int.parse(match2.namedGroup('day'));
var _month = int.parse(match2.namedGroup('month'));
var _year = int.parse(match2.namedGroup('year'));
dateTime = '$_day.$_month.$_year';
print('DATE_TIME(match2): $dateTime');
}
} else {
var _year = int.parse(match1.namedGroup('year'));
var _month = int.parse(match1.namedGroup('month'));
var _day = int.parse(match1.namedGroup('day'));
dateTime = '$_year.$_month.$_day';
print('DATE_TIME(match1): $dateTime');
}
输出:
DATE_TIME: 2020.2.13
但是我需要得到2020.02.13的输出。
其次是 match1 也打印 1302.20.20 但是如果我删除 var match2 部分,如果格式像20200213它的工作原理,但不会打印 0,因为我在上面发布它。
你可以用
text.replaceAllMapped(RegExp(r'\b(?:((?:19|20)\d{2})(0?[1-9]|1[0-2])(0?[1-9]|[12][0-9]|3[01])|(0?[1-9]|[12][0-9]|3[01])(0?[1-9]|1[0-2])((?:19|20)\d{2}))\b'), (Match m) => m[4] == null ? "${m[1]}.${m[2]}.${m[3]}" : "${m[4]}.${m[5]}.${m[6]}")
\b(?:((?:19|20)\d{2})(0?[1-9]|1[0-2])(0?[1-9]|[12][0-9]|3[01])|(0?[1-9]|[12][0-9]|3[01])(0?[1-9]|1[0-2])((?:19|20)\d{2})\b
正则表达式匹配
\b
- 单词边界(?:
- 非捕获组的开始:
((?:19|20)\d{2})
- 20世纪和21世纪的年份(0?[1-9]|1[0-2])
- 月(0?[1-9]|[12][0-9]|3[01])
- 天(0?[1-9]|[12][0-9]|3[01])
-天(0?[1-9]|1[0-2])
-月((?: 19|20)\d{2})
-年请参阅正则表达式演示。
观看Dart演示:
void main() {
final text = '13022020 and 20200213 20111919';
print(text.replaceAllMapped(RegExp(r'\b(?:((?:19|20)\d{2})(0?[1-9]|1[0-2])(0?[1-9]|[12][0-9]|3[01])|(0?[1-9]|[12][0-9]|3[01])(0?[1-9]|1[0-2])((?:19|20)\d{2}))\b'), (Match m) =>
m[4] == null ? "${m[1]}.${m[2]}.${m[3]}" : "${m[4]}.${m[5]}.${m[6]}"));
}
返回< code>13.02.2020和2020.02.13 20.11.1919。
如果组4为空,则第一个备选项匹配,因此我们需要使用组1、2和3。否则,我们用一个点将组4、5和6连接起来。
我有连续的类似货币的字符串序列,如: 我想使用正则表达式来覆盖连续的钱的序列,如字符串到钱类型或在Dart双精度像: 连续货币类字符的输入序列字符串长度为15。 我只是尝试学习正则表达式,并尝试使用: 但它潜入字符串,不添加。在空白空间中: 如我在Dart中所述,转换上述格式的正确正则表达式模式是什么?
问题内容: 有没有检查连续日期的功能。我在处理以下问题时遇到问题: 我的表有一个包含以下数据的列: 给定的开始日期为,结束日期为。我想要的结果是: 有人可以建议什么吗? 问题答案: 我认为这是 “连续日期分组岛” 问题的一种变体。可以使用以下方法完成: SQL小提琴 结果 这是SQL Server 2005版本: SQL小提琴
我正在尝试开发一个正则表达式,它将拒绝所提供的日期格式中的非连续字符。我希望尽可能灵活,所以我决定我的日期格式字符串可以包含YY或YYYY,MM或MMM,DD或DDD,hh mm和ss。 我已经计算出的一些正则表达式-例如,匹配以下内容将显示月份是3个字符的格式: 我完全不知道日期格式是否包含非连续字符。例如,以下日期格式应有效: 但是这些格式应该被拒绝 为了将来的扩展,我想允许非连续的特殊字符
我在API文档中看到上有一个方法,但我不清楚参数需要什么。目前的需要是一个非常简单的直接向上的阿尔法比较。
问题内容: 假设我有这个清单。如何按“日期”(字典中的一项)排序。但是,“日期”是一个字符串… 问题答案:
问题内容: 我试图写一个函数来识别日期组,并测量组的大小。 到目前为止,我一直在使用Python进行此过程,但我想将其移入SQL。 例如清单 应该输出到新表中,如下所示: 理想情况下,这还应该能够解决周末和公共假日的问题- 我表中的日期应该是周一至周五(我想我可以通过制作一个新的工作日表并按顺序编号来解决此问题)。有人建议我尝试CTE。我对此很陌生,因此,我感谢任何人都可以提供的任何指导!谢谢。