Questions tagged «regular-expression»

涉及使用正则表达式的代码挑战。

1
只匹配自己的正则表达式
正则表达式(自匹配正则表达式,正则表达式验证正则表达式)面临一些非常酷的挑战 这可能是不可能的,但是是否存在只能匹配自身的正则表达式? 注意,必须包括定界符: 例如/thing/必须匹配/thing/而不是thing。表达式唯一可能的匹配必须是表达式本身。许多语言允许使用字符串代替正则表达式。例如在Go中 package main import "fmt" import "regexp" func main() { var foo = regexp.MustCompile("bar") fmt.Println(foo.MatchString("foobar")) } 但是为了挑战,如果您想将引号作为分隔符,则让表达式被定界(开始符号,表达式,结束符号ex:/fancypantpattern/或@[^2048]@)。我认为,鉴于此问题的明显困难,它不会带来太大变化。 为了帮助您: 我为rubular.com(用于ruby regex编辑的网页)放在一起的快速技巧: var test = document.getElementById("test") ,regex = document.getElementById("regex") ,delimiter="/" ,options = document.getElementById("options") ,delay = function(){test.value = delimiter + regex.value + delimiter + options.value} ,update = function(e){ // without ...

30
揭穿Stroustrup揭穿神话“ C ++仅适用于大型,复杂的程序”
Stroustrup最近发布了一系列文章,揭露了有关C ++的流行神话。第五个神话是:“ C ++仅适用于大型,复杂的程序”。为了揭穿它,他编写了一个简单的C ++程序,可下载一个网页并从中提取链接。这里是: #include <string> #include <set> #include <iostream> #include <sstream> #include <regex> #include <boost/asio.hpp> using namespace std; set<string> get_strings(istream& is, regex pat) { set<string> res; smatch m; for (string s; getline(is, s);) // read a line if (regex_search(s, m, pat)) res.insert(m[0]); // save match in set return ...

11
正则表达式,纸张,剪刀,蜥蜴,Spock
热身:正则表达式,纸张,剪刀 这是我最初想要发布的挑战,然后才意识到存在一些非常简短的解决方案。尽管如此,思考以下实际挑战仍可能是一个有趣的问题。 编写三个正则表达式R,P和S,使它们以循环的Rock,Paper和Scissors方式彼此匹配。特别地,[R匹配小号,小号匹配P和P相匹配- [R ,但ř 不匹配P,小号 不匹配- [R和P不匹配小号。这是一个方便的桌子: Regex Matches Doesn't match R S P P R S S P R R,P和S对任何其他输入(包括它们自己)执行的操作无关紧要。 在这里,match只是意味着输入的某些(可能为空)子字符串已匹配。匹配不需要覆盖整个输入。 挑战:正则表达式,纸张,剪刀,蜥蜴,Spock 对于这个挑战,您将基于RPS变体Rock,Paper,剪刀,蜥蜴,Spock(由The Big Bang Theory推广)解决上述问题的更严格的版本。在RPSLV中,有五个不同的符号,它们在两个周期内相互跳动: 岩石→剪刀→蜥蜴→纸→麻雀→岩石 岩石→蜥蜴→麻雀→剪刀→纸→岩石 您应该编写五个正则表达式R,P,S,L和V,当它们彼此作为输入时,它们模仿该结构。这是对应的表: Regex Matches Doesn't match R L, S V, P L V, P S, R V S, R P, L ...

30
警察和强盗:反正则表达式高尔夫
注意:此挑战现已关闭。以后的警察提交的任何意见都不会被视为接受的答案。这是为了确保将来没有人可以发布一个非常简单的正则表达式,而这个正则表达式将保持不变,因为没有人再对挑战感兴趣。 警察的挑战 您将编写满足以下规范的简短正则表达式: 您可以选择任何可以在线免费测试的口味。在StackOverflow上有很多在线测试人员。Regex101特别适合入门,因为它支持PCRE,ECMAScript和Python风格。您可以根据需要通过单击右上角的扳手来增加超时限制。请在答案中包括您选择的测试仪。 如果没有适合您选择的测试器,则您还可以使用ideone这样的在线解释器,并用宿主语言编写一个小脚本,人们可以使用该脚本来测试您的提交。 您可以使用该功能的任何功能,而这些功能不会直接调用宿主语言(例如Perl的代码评估功能)。 同样,您可以使用任何修饰符(如果您的口味中有修饰符),除非它们导致代码评估。 您的正则表达式必须在合理的时间内(不超过一分钟)接受至少一个字符串S,并拒绝至少一个字符串T,每个字符串T的长度至少为16且不超过256个字符。S和T可以包含非ASCII的Unicode字符,只要可以将它们输入到在线测试器中即可。任何这样的字符串对都是提交内容的关键。 您的正则表达式可能会花费任意其他输入任意长时间。 挑战的核心是制作很难找到密钥的正则表达式。就是说,要么很难分辨出不匹配的字符串,要么很难分辨出匹配的字符串(或者即使正则表达式需要几天才能完成除键的字符串之外的所有字符串)。 强盗的挑战 鼓励所有用户,包括提交了自己的正则表达式的用户,“破解”其他提交的内容。将提交的其中一个键发布在关联的注释部分时,该提交将被破解。 重要说明:即使您几乎可以将任何字符串用作键的一部分,也请确保发布的两个字符串都在16至256个字符(包括16个字符)之间。 如果提交内容持续存在72小时而没有被修改或破解,则作者可以通过将其编辑为答案中的破坏者标签来显示有效密钥。这将使他的回答“安全”,即不再被破解。 每个用户每次提交只能进行一次破解尝试。例如,如果我向用户X提交:“您的密钥是0123456789abcdef/ fedcba9876543210。” 并且我错了,用户X会否认我的猜测是错误的,并且我将不再能够为该提交提交其他猜测,但是我仍然可以破解其他提交(其他人仍然可以破解该提交)。 破解的提交将被排除在争用之外(前提是它们“不安全”)。不应编辑或删除它们。如果作者希望提交新的正则表达式,则应在单独的答案中提交。 不要破解自己的提交! 注意:对于注释中的长字符串(不含空格),SE会以两个Unicode字符的形式插入手动换行符。因此,如果您在反引号中发布密钥的时间过长,以至于在非空格字符之间换行,则无法将密钥直接复制回正则表达式测试器中。在这种情况下,请提供与警察的正则表达式和您的密钥相关的正则表达式测试人员的永久链接-大多数测试人员都包括此功能。 计分 警察的得分将是其正则表达式的大小(以字节为单位)(如果不破解,则不包括模式加修饰符,不包括潜在的定界符)。“安全”提交的最低分数将获胜。 强盗的分数将是他们破解的提交数量。如果出现平局,则他们破解的提交的总字节大小将用于平局。在这里,最高字节数获胜。 如上所述,任何警察都可以作为强盗参加,反之亦然。 我将为挑战的两个部分分别维护排行榜。 排行榜 最近更新:2014/10/19,20:33 UTC 警察: 斜体提交尚不安全。 nneonneo,841字节 Wumpus Q.Wumbley,10,602字节 SP3000,52506个字节 user23013,53,884字节 nneonneo,656,813字节 强盗: user23013,破解:11,总大小: 733 + 30 + 2,447 + 71 + 109 + 121 + ...

6
硬编码高尔夫:正则表达式可除以7
Matthias Goergens的正则表达式为25,604个字符(低于原来的63,993个字符),以匹配可以被7整除的数字,但是其中包括很多毛病:多余的括号,分布(xx|xy|yx|yy而不是[xy]{2})和其他问题,尽管我敢肯定重新开始将有助于节省空间。这可以做多小? 允许使用各种合理的正则表达式,但正则表达式中不包含可执行代码。 正则表达式应匹配所有包含十进制表示形式的数字的字符串,该数字可以被7整除。不允许开头为0的正则表达式的额外功劳。


23
最短的不可匹配的正则表达式
您的任务是编写没有字符串可以匹配的最短有效正则表达式,包括空字符串。 提交内容必须采用以下格式(“文字符号”): /pattern/optional-flags 最短的正则表达式获胜。正则表达式的大小以字符为单位。(包括斜杠和标志) 请说明您的正则表达式如何工作(如果不简单的话) 谢谢,玩得开心!

16
正则表达式高尔夫的提示
类似于我们针对特定语言的高尔夫技巧的主题:缩短正则表达式的一般技巧是什么? 在打高尔夫球时,我可以看到正则表达式的三种用法:经典的正则表达式高尔夫(“这里是一个应该匹配的列表,这里应该是一个失败的列表”),使用正则表达式来解决计算问题并将正则表达式用作其中的一部分较大的高尔夫球代码。随时发布解决任何或所有这些问题的技巧。如果您的小费仅限于一种或多种口味,请在顶部注明这些口味。 像往常一样,请为每个答案坚持一个提示(或一系列密切相关的提示),以便最有用的提示可以通过投票升至最高位置。

30
另一种Meta Regex高尔夫
注意: 遵循大众需求,我稍微放松了规则: 正则表达式的最大大小每5个答案增加1个字节。答案N最多可以使用29 +⌈N/5⌉字节。 每个答案的分数为(M /(30 + N / 5))N 在regex高尔夫中,您会得到两组字符串,并被要求创建最短的regex,该regex与第一组中的所有字符串匹配,但对第二组中的所有字符串都失败。 那就是我们要做的,但是每次有人回答时,他们的正则表达式本身都会被添加到两组字符串之一(由他们自己选择)中。因此,在这个挑战中有严格的答案顺序。 让我们来看一个例子: 说我以abc(我不会)开始,然后将其放在比赛组合中。 然后一个有效的第二个答案将是a,因为它与上述匹配(并且还没有需要失败的字符串)。说这个答案进入失败集。 现在,第三个答案必须匹配,abc但失败了a。因此,可能的第三个答案是b。让我们将其放入匹配集中。 第四答案现在有匹配abc和b,但未能上a。我们将不允许重复的答案,因此有效的正则表达式为c|b。 重要的是您的答案应尽可能简短。对于前几个答案来说,这可能是微不足道的,但是一旦我们得到了几个答案,就应该越来越难以尽可能少的字符来获得所需的匹配。 对于实际的挑战,匹配集最初包含PPCG,失败集包含[PPCG],我已经提供了第一个答案。 接听 了解这一挑战的关键在于,一次只能一个人回答,每个答案取决于之前的回答。 决不应该有两个相同的答案N。如果两个人碰巧同时回答N了一个问题,则稍后回答的人(即使相差几秒钟)也应该宽容地删除他们的答案。 为了使此过程更流畅,请在发布答案时尝试遵循以下步骤: 确保有人独立验证了先前答案的正确性(并留下了相应的评论)。 取上一个答案中找到的两个测试集,并编写一个正则表达式,它匹配一组中的所有字符串,而另一组中的所有字符串都不匹配。 以以下格式发布答案: # N. [regex flavour] - [regex size in bytes] [regex] [link to online regex tester] [notes, explanation, observations, whatever] ### The next answer has ...

30
警察:制作正则表达式-制作蛇
这是警察的话题。在强盗的线程是在这里。 编写一个接受输入n并创建n×n“蛇阵”的代码。 蛇矩阵是遵循此模式的矩阵: 3乘3: 1 2 3 6 5 4 7 8 9 和4比4: 1 2 3 4 8 7 6 5 9 10 11 12 16 15 14 13 确切的输出格式是可选的。例如[[1 2 3],[6 5 4],[7 8 9]],您可以输出或类似内容。 您必须提供语言名称以及与您的代码完全匹配的正则表达式。您可以选择正则表达式的详细程度。在极端情况下,您可以编写与每个可能的字符串匹配的正则表达式,在这种情况下,很容易破解您的代码。您还必须提供的输出n=4,以便强盗知道您选择的确切格式。 您可以使用regex101.com上提供的一种regex风味或Ruby风味。 PCRE(PHP) Java脚本 蟒蛇 高朗 红宝石 您必须指定使用的是哪一个。 笔记: 您必须支持任何较大的对象n。您可能会认为它不会溢出数据类型或内存。如果默认数据类型是8位带符号整数,则可以假设n<=11,如果它是无符号8位整数,则可以假设n<=15。 强盗必须匹配提交内容的输出格式,但前导/尾随空格和换行符除外,因为这些可能已被SE格式删除。 获奖标准: 获胜者将是具有最短正则表达式的完整作品,以字符数衡量。 ...

22
自然派#0-摇滚
目标 创建一个接受输入的程序/函数N,检查N随机整数对是否相对质数,然后返回sqrt(6 * N / #coprime)。 TL; DR 这些挑战是仅需要自然和大脑(也许还有一些可重复使用的资源)才能逼近Pi的算法模拟。如果您在僵尸启示录期间确实需要Pi,那么这些方法不会浪费弹药!还有另外八个挑战。检出沙盒帖子以提出建议。 模拟 我们在模拟什么?好吧,两个随机整数是相对质数(即coprime或gcd == 1)的概率是6/Pi/Pi,因此计算Pi的自然方法是挖出两个桶(或少数几个)的岩石。数他们;看看他们的gcd是否为1;重复。这样做后,一对夫妇很多次,sqrt(6.0 * total / num_coprimes)会趋向Pi。如果计算世界末日后的平方根使您感到紧张,请不要担心!有牛顿法。 我们如何模拟这一点? 接受输入 N 请执行以下N次数: 均匀生成随机正整数,i并且j 用 1 <= i , j <= 10^6 如果gcd(i , j) == 1:result = 1 其他: result = 0 取N结果的总和,S 返回 sqrt(6 * N / S) 规格 输入值 ...
39 code-golf  math  random  pi  approximation  popularity-contest  code-golf  sequence  number-theory  binary  coding-theory  code-golf  math  3d  code-golf  code-golf  math  number  code-golf  kolmogorov-complexity  code-golf  ascii-art  graphical-output  binary-tree  code-golf  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  array-manipulation  hexadecimal  code-golf  math  number  set-theory  code-golf  math  arithmetic  number-theory  integer  code-golf  string  kolmogorov-complexity  code-golf  math  sequence  arithmetic  decision-problem  code-golf  code-golf  ascii-art  code-golf  array-manipulation  parsing  code-golf  string  ascii-art  kolmogorov-complexity  code-challenge  code-golf  sequence  code-golf  number  array-manipulation  sorting  code-golf  string  function  code-golf  arithmetic  code-golf  math  sequence  number-theory  primes  restricted-source  javascript  code-challenge  polyglot  rosetta-stone  code-golf  code-golf  regular-expression  code-golf  math  code-golf  math  primes  code-golf  ascii-art  kolmogorov-complexity  binary  code-golf  math  sequence  code-golf  sequence  subsequence  code-golf  string  code-golf  parsing  music  code-golf  grid  game  path-finding  board-game  code-golf  string  binary  code-golf  array-manipulation  balanced-string  code-golf  code-golf  algorithm  code-golf  string  number  arithmetic  array-manipulation  code-golf  array-manipulation  binary-tree  tree-traversal  code-golf  code-golf  tips  code-golf  string  base-conversion  code-golf  tips  s.i.l.o.s  code-golf  string  ascii-art  code-golf  code-challenge  code-golf  game 

5
使用正则表达式添加数字
我想尝试一种新型的regex高尔夫挑战赛,它要求您用正则表达式替代只解决简单的计算任务。为了使这一切成为可能,减少琐事,您将被允许应用多个替换,一个接一个。 挑战 我们将从简单开始:给定一个包含两个正整数的字符串,用用a分隔的十进制数表示,,产生一个包含它们的总和的字符串,也用十进制数表示。所以,非常简单 47,987 应该变成 1034 您的答案应适用于任意正整数。 格式 每个答案应该是一系列替换步骤,每个步骤都由一个正则表达式和一个替换字符串组成。(可选)对于序列中的每个步骤,您可以选择重复替换,直到字符串停止更改。下面是一个例子提交(它不解决上述问题): Regex Modifiers Replacement Repeat? \b(\d) g |$1 No |\d <none> 1| Yes \D g <empty> No 给定输入123,456,此提交将按如下方式处理输入:第一次替换将被应用一次并产生: |123,|456 现在在循环中应用第二个替换,直到字符串停止更改为止: 1|23,|456 11|3,|456 111|,|456 111|,1|56 111|,11|6 111|,111| 最后,第三次替换被应用一次: 111111 请注意,循环的终止条件是字符串是否更改,而不是正则表达式是否找到匹配项。(也就是说,如果找到匹配项,但替换项与匹配项相同,它也可能会终止。) 计分 您的主要分数将是您提交的替代步骤数。每次重复替换将计为10个步骤。因此,上面的示例将得分1 + 10 + 1 = 12。 在平局(不太可能)的情况下,次要得分是所有步骤的总和。对于每个步骤,请添加正则表达式(不带分隔符),修饰符和替换字符串。对于上述示例,将为(6 + 1 + 3) ...

3
HexaRegex:致敬马丁·恩德(Martin Ender)
马丁·恩德(Martin Ender)最近达到了10万,并提出了一些很棒的语言。我们将与其中之一Hexagony(以及Retina的正则表达式)一起玩得开心 作为简要概述,您需要编写一个程序来输入一个Hexagony网格,并确定该网格上是否存在与文本字符串匹配的路径 产生中 六边形使用以下步骤从一串文本生成六边形: 计算最小六边形大小(取字符串的长度并四舍五入到最接近的十六进制数) 将文本包装成上述大小的六边形 用填充其余位置.。 例如,文本字符串abcdefghijklm需要边长为3的六边形,因此变为: a b c d e f g h i j k l m . . . . . . 现在,请注意您可以沿六边形行驶的六个方向。例如,在上述六边形中,e与相邻abfjid。 包装纸 此外,在六角形中,六角形包裹: . . . . . a . . . . f . . a . . a b c ...

24
这是Loeschian号码吗?
正整数k是Loeschian数,如果 k可以表示i*i + j*j + i*j为i,j整数。 例如,第一正Loeschian号码为:1(i=1,j=0); 3(i=j=1); 4(i=2,j=0); 7(i=2,j=1); 9(i=-3,j=3); ...注意i,j对于给定k的不是唯一的。例如,9也可以与产生的i=3,j=0。 这些数字的其他等效特征是: k可以表示i*i + j*j + i*j为i,j非负整数。(对于每对整数i,j都有一对给出相同值的非负整数k) 有一组k连续的六边形在六边形网格上形成网格化(请参见k = 4和的插图k = 7)。(由于这个属性,这些数字可在移动蜂窝通信网络中找到应用。) 在序列的OEIS页面中查看更多特征。 挑战 给定一个正整数,如果它是Loeschian数,则输出真实结果,否则,则输出虚假结果。 程序或函数应处理(例如不到一分钟)最多达1000或数据类型限制的输入。 代码高尔夫。最短的胜利。 测试用例 以下数字应输出真实结果: 1, 4, 7, 12, 13, 108, 109, 192, 516, 999 以下数字应输出虚假结果: 2, 5, 10, 42, 101, 102, 128, 150, 501, ...
33 code-golf  math  number  number-theory  decision-problem  code-golf  kolmogorov-complexity  code-golf  sequence  code-golf  path-finding  chess  code-golf  string  ascii-art  kolmogorov-complexity  code-golf  math  arithmetic  code-golf  code-golf  number  code-golf  geometry  code-golf  math  code-golf  code-golf  kolmogorov-complexity  alphabet  code-golf  regular-expression  hexagonal-grid  king-of-the-hill  path-finding  java  code-golf  string  sorting  code-golf  string  grid  code-challenge  compression  code-golf  random  code-golf  sequence  arithmetic  code-golf  number  grid  tiling  code-golf  tips  code-golf  sequence  number-theory  recursion  code-golf  string  grid  code-golf  math  number  combinatorics  permutations  string  code-challenge  code-golf  sequence  number-theory  subsequence 

30
ASCII三角形
您的任务是编写一个打印ASCII三角形的程序或函数。他们看起来像这样: |\ | \ | \ ---- 您的程序将采用单个数字输入n,并带有约束0 <= n <= 1000。上面的三角形的值为n=3。 ASCII三角形将具有n反斜杠(\)和竖线(|),n+1线和破折号(-),并且每行除最终行外还将具有等于行号(从0开始,即第一行为行0)的空格。 。 例子: 输入: 4 输出: |\ | \ | \ | \ ----- 输入: 0 输出: 在此测试用例中,输出必须为空。没有空格。 输入: 1 输出: |\ -- 输入和输出必须完全是我指定的方式。 这是代码高尔夫球,因此请争取尽可能短的代码!
30 code-golf  ascii-art  code-golf  rubiks-cube  code-golf  path-finding  maze  regular-expression  code-golf  math  rational-numbers  code-golf  kolmogorov-complexity  graphical-output  code-golf  tips  code-golf  string  permutations  code-golf  sorting  base-conversion  binary  code-golf  tips  basic  code-golf  number  number-theory  fibonacci  code-golf  date  code-golf  restricted-source  quine  file-system  code-golf  code-golf  math  code-golf  ascii-art  code-golf  math  primes  code-golf  code-golf  math  matrix  code-golf  string  math  logic  factorial  code-golf  palindrome  code-golf  quine  stateful  code-golf  interactive  code-golf  board-game  code-golf  math  arithmetic  code-golf  string  code-golf  math  matrix  code-golf  math  abstract-algebra  polynomials  code-golf  date  code-golf  string  array-manipulation  sorting  code-golf  game  code-golf  string  code-golf  ascii-art  decision-problem  code-golf  number  sequence  code-golf  code-golf  code-golf  sequence  fibonacci  code-golf  math  geometry  random  code-golf  code-golf  math  decision-problem  fractal  rational-numbers  code-golf  number  number-theory  code-golf  combinatorics  permutations  card-games  code-golf  math  sequence  array-manipulation  fibonacci  code-golf  sequence  decision-problem  graph-theory  code-golf  ascii-art  parsing  lisp  code-golf  string  math  natural-language  logic  code-golf  math  logic  code-golf  string  alphabet  code-golf  string  code-golf  string 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.