所以我想我知道一点regex,但似乎我发现了一个案例,我的知识是在它的结束。无论如何,我尝试了下面的Regex Replace function: in cases of no match, $1 returns full line instead of null,但主要的区别是,我不仅要用匹配替换输入,而且还要在匹配之间插入一些字符。简单地说,我想将输入标准化为某种模式。我想要匹配并捕获输入的特定部分但不是全部的正则表达式
^[\D]*(?P<from_day>(0?[1-9])|([12][0-9])|3[01])[\.\-\s,■]+(?P<from_month>(0?[1-9])|(1[0-2]))[\.\-\s,■]*(?P<until_day>(0?[1-9])|[12][0-9]|3[01])[\.\-\s,■]+(?P<until_month>(0?[1-9])|1[012])[\D]*$
替换字符串:
\g<from_day>.\g<from_month>-\g<until_day>.\g<until_month>
输入:
28.11 16.12
"13.01 23,09"
01.08.-31.12
"01.01,-51.12"
"01,01.-31,12."
01083112
1.02 - 4.3
电流输出:
28.11-16.12.-.
13.01-23.09.-.
01.08-31.12.-.
.-..-.
01.01-31.12.-.
.-..-.
1.02-4.3.-.
预期/期望:
28.11-16.12
13.01-23.09
01.08-31.12
01.01-31.12
1.02-4.3
1条答案
按热度按时间daolsyd01#
你应该把你的正则表达式改为:
Updated RegEx Demo
这将处理所有问题,除非没有匹配。如果没有匹配,则应使用
lambda
函数re.sub
替换为空字符串。Python代码: