mir*_*a . 3 regex text full-text-search
我想匹配至少重复一次的最长序列
拥有:
T_send_ack-new_amend_pending-cancel-replace_replaced_cancel_pending-cancel-replace_replaced
结果应该是:pending-cancel-replace_replaced
尝试这个
(.+)(?=.*\1)
Run Code Online (Sandbox Code Playgroud)
在 Regexr 上看到它
这将匹配具有至少一个字符的任何字符序列,该字符序列稍后在字符串中重复。
您需要存储您的匹配项,然后决定哪一个是最长的。
此解决方案需要您的正则表达式风格来支持反向引用和前瞻。
它将匹配任何具有至少一个字符的字符序列并将其.+存储在组 1 中,因为它周围有括号。下一步是正向前瞻(?=.*\1),如果捕获的序列稍后再次出现在字符串中,则为真。