我正在尝试编写一个正则表达式,它只能匹配那些每个空格分隔的标记恰好出现两次的行,无论顺序如何。
例如,以下整行应该匹配:
1 1 2 2
100 10 10 100
A B B A
HELLO HELLO
Run Code Online (Sandbox Code Playgroud)
以下行不应匹配:
hello hello hello
1 1 22
1001
Run Code Online (Sandbox Code Playgroud)
尽管我能够使用 regex 匹配给定行中的各个重复组(\d+)(?=.*(\1)),但我很难使用^$. 我的猜测是,当我使用前瞻时,这会创建一个无限循环,我们不断地查看每个标记(包括重复)并期望稍后在字符串中重复,尽管我不确定如何解决这个问题。有任何想法吗?谢谢!
[编辑]:根据评论中的问题添加一些细节:显然,在大多数编程语言中将其实现为函数是相当简单的。然而,我最初希望将其实现为正则表达式,因为我试图匹配数据库中的某些记录。因此,这个正则表达式旨在作为 CASE 语句嵌入到 SQL 查询中,在我看来,这将是进行选择的好方法。
考虑到这种正则表达式的明显复杂性,似乎创建一个函数是可行的方法,因此几乎任何以下答案都将是很好的解决方案,具体取决于具体情况。