【问题标题】:What is the meaning of the Regular Expression ^(.)\1+$正则表达式 ^(.)\1+$ 是什么意思
【发布时间】:2015-06-26 18:34:42
【问题描述】:

由于我是正则表达式的新手,我精通正则表达式。

有人可以帮忙解释一下这个正则表达式的含义吗?

^(.)\1+$

【问题讨论】:

  • 见这里:regexr.com/3b9j0(它至少重复一个字符两次)
  • 表示字符串包含完全相同的字符,重复2次以上。
  • 如果您不能很好地阅读正则表达式,那么这个网站非常适合了解正则表达式的基本含义:myezapp.com/apps/dev/regexp/show.ws

标签: c# regex c#-4.0


【解决方案1】:

^(.)\1+$ 是一个聪明的正则表达式,它匹配任何包含两个或多个相同字母的完整行。例如:

  • aaa
  • BBBBBB

参见 cmets 了解正则表达式各部分的作用。

【讨论】:

  • 答案不一样,因为你忘了说它必须是完整的行,给定 ^ 和 $。 :P
  • 同意,但从技术上讲,它匹配任何字符,不仅是字母:P
  • @AndriyHoren 哈哈!该死的英语技术;)
【解决方案2】:

简答:题目中的第一个字符重复一次或多次,占据整个测试题目。换句话说,整个主题被两个或多个相同的角色占据。

因为你正在学习:

'^' 是主语“anchor”的开头。它不消耗任何数据,只是断言一个位置。类似于元字符序列 \A 如果你遇到它,虽然后者不受行模式的影响(研究正则表达式“模式修饰符”)。

'$' 是主题锚的结尾。同样,一个非消耗性断言。类似于 \Z 元字符,尽管后者不受行模式的影响。 \z 的近亲(尽管后者不考虑换行符和行模式)。每当您看到一个带有 ^...$ 的正则表达式时,它都在断言匹配条件是从前到后的。

"()" 正在捕获括号。这意味着您可以“参考”使用 \N 捕获的内容,其中 N 是 1-9,对应于捕获括号的顺序,从左到右。在您的示例中,我们只有一个捕获组,因此称为 \1。除了捕获以供参考之外,组还用于量化——将模式重复指定次数,以及字符串或模式的交替,例如:(^|$),其中 "| "是一个逻辑“或”,此正则表达式将测试主题是否以下划线开头或结尾。

'.' (dot) 是表示任何单个字符的元字符。 (粗略地说,查看各种匹配“模式”,看看如何控制点是否匹配换行符。不要将“字符”与八位字节或字节混淆。语言环境和字符集编码过于宏大,无法详细说明,但请注意,“角色”的定义在某种程度上是上下文相关的。)

'+' 是一个或多个量词。 \1+ 表示捕获组 1 捕获的任何字符重复一次或多次(即出现两次或多次)。 "aa" 将匹配,其中第一个 'a' 与组 \1 中捕获的点匹配,第二个 'a' 匹配,因为它满足一个或多个量化。

【讨论】:

    猜你喜欢
    • 2012-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    • 2011-06-15
    • 2012-05-07
    • 2015-07-23
    • 2012-09-07
    相关资源
    最近更新 更多