当前位置: 首页 > 知识库问答 >
问题:

正则表达式,避免匹配连续字符

乔伯寅
2023-03-14

我正在努力提高我的正则表达式技能。我做不了这个练习。

https://alf.nu/RegexGolf

您必须匹配没有连续相同字符的单词。为了清楚起见,我们应该避免像abba、baab、czzc这样的模式。

我看到的唯一方法是使用捕获组:

([a-z])([a-z])\2\1

然后进行负面展望:

(?!([a-z])([a-z])\2\1)

但在网站上,它不工作,因为它不匹配任何东西。

有什么建议吗?谢谢

共有3个答案

闾丘朗
2023-03-14

多亏了蒂姆·比格莱森,以下是答案<代码>^(?...*(.)(.2\1)。*$

席弘图
2023-03-14

^(?!cr | pal | tar)[a-z]{1,4}([a-z])\1[a-z]{0,5}$这在您提供的链接中对我有效。我想我们必须用连续的字母来匹配模式。但也有一些例外,我不得不在开始时使用消极的前瞻。我使用([a-z])\ 1匹配由可能限制的可能字符包围的连续字符。希望这有帮助!附上截图供参考。

https://i.stack.imgur.com/va1Uq.png

公冶安怡
2023-03-14

使用负面展望:

^(?:(.)(?!\1))*$

解释:

^               from the start of the input
    (?:
        (.)     match AND capture a single character
        (?!\1)  then assert that what follows is a different character (not the same)
    )*          match zero or more such matching characters
$               end of the input

另一种可能更简单的方法是在模式的一开始就进行全球负面展望:

^(?!.*(.)\1).*$

这将在一开始就断言字符串中的任何位置都没有重复的字符。

 类似资料:
  • Perl6正则表达式匹配连接 它为False,因为连词中的“23”与$a中的“23”子字符串匹配,但此子字符串与连词中的“ef”不匹配。这有点违反直觉,因为它更容易解释$a ~~ m/23 如果我有n个正则表达式,我想看看是否所有这些n个正则表达式都匹配相同的整个字符串,而不是匹配整个字符串的相同子字符串部分,那么编写perl6表达式的最佳方法是什么? 在例子中,我真的想做 如果正则表达式的数量很

  • 我们得到了一些这样的内容:

  • 有没有人试图描述与正则表达式匹配的正则表达式? 由于重复的关键字,这个主题几乎不可能在网上找到。 它可能在实际应用程序中不可用,因为支持正则表达式的语言通常具有解析它们的方法,我们可以将其用于验证,以及一种在代码中分隔正则表达式的方法,可用于搜索目的。 但是我仍然想知道匹配所有正则表达式的正则表达式是什么样子的。应该可以写一个。

  • 主要内容:基本模式匹配,字符簇,确定重复出现基本模式匹配 一切从最基本的开始。模式,是正则表达式最基本的元素,它们是一组描述字符串特征的字符。模式可以很简单,由普通的字符串组成,也可以非常复杂,往往用特殊的字符表示一个范围内的字符、重复出现,或表示上下文。例如: 这个模式包含一个特殊的字符 ^,表示该模式只匹配那些以 once 开头的字符串。例如该模式与字符串 "once upon a time" 匹配,与 "There once was

  • 问题内容: 我在尝试将我的javascript regex经验转移到Python时遇到了麻烦。 我只是想让它工作: …但是它打印无。如果我做: 它匹配…默认情况下是否匹配字符串的开头?当匹配时,如何使用结果? 我如何进行第一场比赛?是否有比python网站提供的文档更好的文档? 问题答案: 隐式添加到您的正则表达式的开头。换句话说,它仅在字符串的开头匹配。 将在所有位置重试。 一般来说,建议您在需

  • 问题内容: 我在用Python将字符串中的数字匹配时遇到麻烦。尽管应该明确匹配,但甚至不匹配 或仅匹配。我的监督在哪里? 问题答案: 阅读文档:http : //docs.python.org/2/library/re.html#re.match 如果在零个或多个字符 开头 的 字符串 您要使用(或)