【问题标题】:LUA patterns to detect matching date用于检测匹配日期的 LUA 模式
【发布时间】:2017-03-15 17:29:11
【问题描述】:

我努力寻找正确的 LUA 代码来检测两个日期是否相继出现。

我有类似的东西可以检测到两个关键字,但它不适用于我的日期。

这是我目前拥有的 LUA 代码:

(%a+) %- %1$

干杯,

【问题讨论】:

  • 你能举一个你想匹配的例子吗?另外,您使用的是什么语言?
  • 请提供一些您正在检查的文本示例和预期结果。
  • 您似乎想匹配与%1 重复相同的模式 - 不,此%1 匹配与(%a+) 匹配的相同字母字符。尝试删除字符串锚点的$ 结尾。请提供您尝试匹配的示例字符串。顺便说一句,您使用的不是正则表达式,这些是 Lua 模式。
  • 我绝对不会为此使用正则表达式。很难做到正确,特别是如果一个日期可能重复多次。您可以使用哪些工具/语言?
  • 检查ideone.com/1F1L9s,尝试'^(%d+%-%d+%-%d+) %- %1$''(%d+%-%d+%-%d+) %- %1'(如果你想在较长的字符串中匹配较短的子字符串)。

标签: date duplicates lua-patterns


【解决方案1】:

您的主要问题是您想将2017-03-19 之类的日期与%a+ 模式匹配。 %a 匹配一个字母,%a+ 匹配一个或多个字母。

您需要将此模式替换为更精确的模式,例如 %d+%-%d+%-%d+%d%d%d%d%-%d%d%-%d%d

'(%d+%-%d+%-%d+) %- %1'

%d 匹配一个数字。

现在,如果你想像这样匹配整个字符串,你需要用 ^$ 锚点将模式括起来。

'^(%d+%-%d+%-%d+) %- %1$'

如果要添加单词边界,

 '%f[%d](%d+%-%d+%-%d+) %- %1%f[%D]'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-19
    • 2019-03-29
    • 1970-01-01
    • 1970-01-01
    • 2018-03-02
    • 2011-02-03
    • 2020-10-27
    • 1970-01-01
    相关资源
    最近更新 更多