如果有人问过并回答了这个问题,我很抱歉,但我看不出来。
我有一个托管表单,我想用查询字符串预填充已知的数据,该字符串可以包含多个日期。日期不使用正斜杠填充到表单中,而是使用句点填充;因此,我希望将代码步骤放到Zapier中,以便在URL形成之后,我可以进行替换,然后对剩下的内容进行编码。Zapier有Javascript或Python。
我在Python中没有任何地方,但在JS中却有这么多。
设INPUT = inputData.INPUT;
设输出= INPUT.replace(/b\d{2}/\d{2}/\d{4}/g,".");
输出={输入,输出};
我想我已经接近了,但是上面的每一个变化都可以代替所有的正斜线,或者用句号替换除日期以外的所有内容。
提前感谢
发布于 2022-10-24 14:26:59
这里有一个Python解决方案。
我想这或多或少就是你要找的东西。Regex可以根据您的特定需求进行细化。
re.sub函数在字符串中搜索匹配项,将其解析为Match对象,并在分组Match对象上执行函数。
在本例中,我用lambda函数替换了通常的函数调用,以创建一个一行。
import re
url_with_fs_dates = 'www.helloworld.com/test/01/01/2022&01/02/2022222'
url_with_period_dates = re.sub(r'\d{2}\/\d{2}\/\d{4}', lambda x: x.group().replace('/','.'), url_with_fs_dates)
print(url_with_period_dates)
# www.helloworld.com/test/01.01.2022&01.02.2022222发布于 2022-10-24 19:11:46
我假设日期可以有一个或两个数字的月份和日期,整个日期必须在一个词的边界,意味着没有字母数字或'_‘字符在左和右。如果这个假设不正确,那么从以下正则表达式中删除每个'\b‘:
\b(\d\d?)/(\d\d?)/(\d{4})\b\b -匹配空字符串,但只匹配单词的开头或结尾。(\d\d?) -匹配一个或两个数字作为组1。/ - Match '/'.(\d\d?) -匹配一个或两个数字作为组2。/ - Match '/'.(\d{4}) -匹配4位数作为第3组。\b -匹配空字符串,但只匹配单词的开头或结尾。所有匹配的事件被替换为..。
\1.\2.\3其中\1、\2和\3代表组1、2和3匹配。
import re
s = 'x=1/1/2023&y=12/25/2023,01/16/2024'
s = re.sub(r'\b(\d\d?)/(\d\d?)/(\d{4})\b', r'\1.\2.\3', s)
print(s)指纹:
x=1.1.2023&y=12.25.2023,01.16.2024Note
我不熟悉所有的国际语言(很明显),对于那些我熟悉的数字使用日期是0,1,2,...9。如果您的语言是这样的,那么理想情况下,应该使用[0-9]而不是\d,这可以与[0-9]以外的其他数字字符匹配。但我假设您的输入不会包含这些字符,如果它们不是在您使用的语言中。
https://stackoverflow.com/questions/74181292
复制相似问题