Regex 根据正则表达式匹配第一个日期

Regex 根据正则表达式匹配第一个日期,regex,date,notepad++,Regex,Date,Notepad++,我正在尝试为Notepad++编写一个正则表达式搜索字符串,它将匹配每行的第一个日期 我的文本如下所示: Nåskal folk fåfred,iTromsø,2017年9月9日19:09马丁·勒格兰德,Publisert pånett. Nåskal folk fåfred,iTromsø,2017年9月9日,Martin Lægland 2017年12月31日Publisert pånett. Nåskal folk fåfred,iTromsø,2017年9月9日19:09马丁·Læ格兰德

我正在尝试为Notepad++编写一个正则表达式搜索字符串,它将匹配每行的第一个日期

我的文本如下所示:

Nåskal folk fåfred,iTromsø,2017年9月9日19:09马丁·勒格兰德,Publisert pånett.
Nåskal folk fåfred,iTromsø,2017年9月9日,Martin Lægland 2017年12月31日Publisert pånett.
Nåskal folk fåfred,iTromsø,2017年9月9日19:09马丁·Læ格兰德,Publisert pånett

我只想要每行的第一个日期,因此不包括第二行的2017年12月31日


我试过
\K(([0-9]{2})。([0-9]{2})。([0-9]{4}))
,但这只给了我第二个日期,而不是第一个

完全归功于ctwheels。用不同的味道来定义边界

^.*?\K[0-9]{2}+\.[0-9]{2}+\.[0-9]{4}+
说明:

^ asserts position at start of the string
.*? matches any character (except for line terminators)
*? Quantifier — Matches between zero and unlimited times, as few times as possible, expanding as needed (lazy)
\K resets the starting point of the reported match. Any previously consumed characters are no longer included in the final match
Match a single character present in the list below [0-9]{2}+
{2}+ Quantifier — Matches exactly 2 times
0-9 a single character in the range between 0 - 9 
\. matches the character . literally (case sensitive)
Match a single character present in the list below [0-9]{2}+
{2}+ Quantifier — Matches exactly 2 times
0-9 a single character in the range between 0 - 9 
\. matches the character . literally (case sensitive)
Match a single character present in the list below [0-9]{4}+
{4}+ Quantifier — Matches exactly 4 times
0-9 a single character in the range between 0 - 9 
Global pattern flags
g modifier: global. All matches (don't return after first match)

完全归功于ctwheels。用不同的味道来定义边界

^.*?\K[0-9]{2}+\.[0-9]{2}+\.[0-9]{4}+
说明:

^ asserts position at start of the string
.*? matches any character (except for line terminators)
*? Quantifier — Matches between zero and unlimited times, as few times as possible, expanding as needed (lazy)
\K resets the starting point of the reported match. Any previously consumed characters are no longer included in the final match
Match a single character present in the list below [0-9]{2}+
{2}+ Quantifier — Matches exactly 2 times
0-9 a single character in the range between 0 - 9 
\. matches the character . literally (case sensitive)
Match a single character present in the list below [0-9]{2}+
{2}+ Quantifier — Matches exactly 2 times
0-9 a single character in the range between 0 - 9 
\. matches the character . literally (case sensitive)
Match a single character present in the list below [0-9]{4}+
{4}+ Quantifier — Matches exactly 4 times
0-9 a single character in the range between 0 - 9 
Global pattern flags
g modifier: global. All matches (don't return after first match)
代码


结果 输入 输出
解释
  • ^
    在行首断言位置
  • *?
    匹配任意字符任意次数,但尽可能少
  • \K
    重置报告匹配的起点。任何以前使用的字符将不再包含在最终匹配中
  • \d+\.\d+\.\d+
    将任何数字匹配一次或多次,后面跟着一个点
    字面意思,后面跟着相同的东西(任何数字一次或多次,后面跟着一个点
    字面意思),后面跟着任何数字一次或多次
代码


结果 输入 输出
解释
  • ^
    在行首断言位置
  • *?
    匹配任意字符任意次数,但尽可能少
  • \K
    重置报告匹配的起点。任何以前使用的字符将不再包含在最终匹配中
  • \d+\.\d+\.\d+
    将任何数字匹配一次或多次,后面跟着一个点
    字面意思,后面跟着相同的东西(任何数字一次或多次,后面跟着一个点
    字面意思),后面跟着任何数字一次或多次

你试过什么了吗?请分享您的尝试,让我们不要重复同样的努力。@WiktorStribiżew抱歉,我已经尝试过更新。关于Stackoverflow的第一个问题:)@ThomasTallaksen您可以使用
^.*.\K\d+\.\d+\.\d+
您尝试过什么吗?请分享您的尝试,让我们不要重复同样的努力。@WiktorStribiżew抱歉,我已经尝试过更新。我关于Stackoverflow的第一个问题:)@ThomasTallaksen您可以使用
^.*.\K\d+\.\d+.\d+
+1,因为您首先破解了它,所以我要求您包含量词,而不是任何数量的量词hits@SriniV谢谢,我本来打算使用特定的量词,但我认为根据输入格式的性质,这不是绝对必要的。如果指定量词是解决问题不可或缺的一部分,OP可以使用您的解决方案。+1,因为您首先破解了它,我会要求您包含量词,而不是任何数量的量词hits@SriniV谢谢,我本来打算使用特定的量词,但我认为根据输入格式的性质,这不是绝对必要的。如果指定量词是解决问题的关键,OP可以使用您的解决方案。
{4}+
等于
{4}
,因为您不能以占有、贪婪或懒惰的方式精确匹配4个字符。它将始终尝试匹配4个字符。
{4}+
等于
{4}
,因为您不能以占有、贪婪或懒惰的方式精确匹配4个字符。它将始终尝试匹配4个事件。
09.09.2017
09.09.2017
09.09.2017