正则表达式 - 匹配除捕获之外的任何内容

时间:2015-02-18 00:29:06

标签: c# regex

我一直在摆弄,但我无法完成以下工作 - 我希望能够检查重复(垃圾邮件)使用一个字符和一个字符,使用任意长度的字符串。显然,使用正则表达式。

1111111111111 - 应匹配

1111111112111 - 不应该匹配

!!!!!!!!!!!!! - 应匹配

!!!!!!a!!!!!! - 不应该匹配

反之亦然;就像在,对于结果,我完全没有TRUE或FALSE。只要我能真正得到一个结果。我不是一个前任大师,我相信我有一些类似于

的东西
^.*(.).*(?!\1)$

......但是,没有运气。

编辑(2015年2月18日,格林威治标准时间11点11分+1):

部分结束关于性能和其他解决方案最佳的主题的辩论,我决定对3个主要提供的解决方案进行基准测试;正则表达式,Linq的Distinct()方法和Linq的ORDER BY功能。

结果:

Generating data (1000 crytopgraphically strong random passwords)......done

Testing begins now!

Regular expression......done, 1000 iterations took 3033 microseconds

string.Distinct......done, 1000 iterations took 10822 microseconds

Order by (Linq)......done, 1000 iterations took 13566 microseconds

3 个答案:

答案 0 :(得分:1)

试试这个:

/^(.)\1*$/gm

请参阅演示:https://regex101.com/r/sP1mQ4/1

答案 1 :(得分:1)

我相信你正在寻找以下内容以确保你有一串重复的字符。

^(.)\1*$

答案 2 :(得分:-1)

    Public Function IsSpam(value As String) As Boolean
    Dim a = From n In value.ToCharArray() Order By n Descending
            Order By n Descending

    Return a(0) = a(a.Count - 1)
End Function

是使用Regex的替代方法。