Questions tagged «regular-expression»

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

1
制作一个正则表达式
编写一个至少可以在2种正则表达式版本(或版本)中运行的正则表达式,并在其运行的每种版本(或版本)中匹配一个不同的字符串。 在此挑战中要匹配的字符串是Ubuntu代码名称的第一个单词,下面列出。您的正则表达式必须与列表顶部匹配。也就是说,如果您的正则表达式可以使用3种样式,则必须与Warty Hoary和匹配Breezy,而不是其他。 Warty Hoary Breezy Dapper Edgy Feisty Gutsy Hardy Intrepid Jaunty Karmic Lucid Maverick Natty Oneiric Precise Quantal Raring Saucy Trusty Utopic Vivid Wily Xenial Yakkety Zesty 17.10 18.04 18.10 19.04 19.10 ... 如果您的正则表达式可以使用超过26种口味,则可以匹配Ubuntu版本号。从17.10开始,对于每个新口味,如果第二个数字为04,则将其更改为10,然后将第一个数字递增,将第二个数字更改为04。 在每种形式中,您的正则表达式应仅匹配假定的字符串,而不匹配其他字符串(不限于代码名称)。尾随换行符无关紧要。这意味着您的正则表达式可以只匹配不带尾随换行符的字符串,仅匹配带尾随换行符的字符串,或者匹配两者。而且不必在不同口味上保持一致。您可以假定输入使用可打印的ASCII(末尾的换行符除外,如果有的话)。 您的分数是(代码长度+10)/((风味数)^ 2)。最低分获胜。

8
从字符串中删除单行和多行注释
目标 使用您选择的编程语言,编写最短的程序以消除代表C程序的字符串中的注释。 输入项 字符串可以视为任何形式的输入,但也可以视为变量。 使用说明 两种不同的注释将被删除: 多行注释,以开头/*和结尾*/ 单行注释,//以Linux样式的换行符(LF,\n)开始和结束 字符串中的注释不可删除。出于此挑战的目的,您只需要考虑- "分隔的字符串。特别是,您可以忽略使用- '分隔字符文字的可能性。您也可以忽略三边形和连字号(/\<LF>*...)。 例子 输入: #include <stdio.h> int main(int argc, char** argv) { // this comment will be removed if (argc > 1) { printf("Too many arguments.\n"); // this too will be removed return 1; } printf("Please vist http://this.will.not.be.removed.com\n"); printf("/* This will …

2
单数还是复数?
以下是30个单数和复数形式的英语名词的列表。您的工作只是写最短的正则表达式,以一种形式匹配所有名词,而以另一种形式都不匹配(容易,所有英语名词都s以复数形式结尾吗?)。 SINGULAR PLURAL --------- -------- car cars boat boats man men woman women omen omens bus buses cactus cacti spy spies pie pies louse lice mouse mice amice amices goose geese creese creeses person people child children siren sirens ox oxen foot feet tooth teeth formula formulae minx minxes sphinx …

2
正则表达式:匹配平均主义系列
介绍 我在这里看不到很多正则表达式挑战,因此我想提供这种看似简单的方法,可以使用多种正则表达式来以多种方式完成。我希望它为正则表达式爱好者提供一些有趣的打高尔夫球时间。 挑战 面临的挑战是匹配我非常宽松地称为“平等主义者”系列的内容:一系列相等数量的不同字符。最好用示例来描述。 比赛: aaabbbccc xyz iillppddff ggggggoooooollllllffffff abc banana 不匹配: aabc xxxyyzzz iilllpppddff ggggggoooooollllllfff aaaaaabbbccc aaabbbc abbaa aabbbc 一概而论,要匹配形式的主题(为任意字符的列表来,在所有c1)n(c2)n(c3)n...(ck)nc1ckci != ci+1i, k > 1, and n > 0. 说明: 输入将不为空。 字符可以稍后在字符串中重复(例如“ banana”) k > 1,因此字符串中将始终至少包含2个不同的字符。 您可以假定仅将ASCII字符作为输入传递,并且没有字符将成为行终止符。 规则 (感谢马丁·恩德(Martin Ender)出色阐述了这一规则) 您的答案应该由一个正则表达式组成,没有任何其他代码(可选地,使您的解决方案起作用所需的正则表达式修饰符列表除外)。您不得使用允许您以托管语言调用代码的语言正则表达式功能(例如Perl的e修饰符)。 您可以使用在挑战之前存在的任何正则表达式风味,但请指定风味。 不要假设正则表达式是隐式锚定的,例如,如果您使用的是Python,请假设您的正则表达式用于re.search,而不用于re.match。您的正则表达式必须与整个字符串匹配有效的均等字符串,而对于无效字符串则不匹配。您可以根据需要使用任意数量的捕获组。 您可以假设输入将始终是两个或多个不包含任何行终止符的ASCII字符的字符串。 这是正则表达式高尔夫,因此以字节为单位的最短正则表达式获胜。如果您的语言需要分隔符(通常是/.../)来表示正则表达式,请不要计算分隔符本身。如果您的解决方案需要修饰符,请为每个修饰符添加一个字节。 标准 这是一门不错的老式高尔夫球,所以请不要考虑效率问题,而要尽量减小正则表达式。 请说明您使用了哪种正则表达式,并在可能的情况下提供一个链接,该链接显示了您在操作中的表情在线演示。

4
一周中压缩的天数
输入星期几列表,则输出列表中最短的排序表示形式。 输入的格式是由一个或多个双字符子串的字符串Su(星期日), Mo(星期一), Tu(等), ,We,Th, Fr和Sa。输入不一定必须以排序的顺序给出。 要将输入转换为输出格式, 从星期天开始按星期几对输入进行排序(例如ThMoSaSuFrTuWe-> SuMoTuWeThFrSa)。 如果不引起歧义,请将缩写词减少到一个字母。例如,之所以SuMoTuWe成为,SMTW是因为第一个S不可能在星期六,因为这样会使输出未排序(与T相同)。但是,ThFrSa应该成为ThFS,因为星期二和星期四都在星期五之前,并将其减小以TFS产生歧义。 如果输出为now MTWTF,则D改为输出(代表“ 工作日 s”)。同样,SS应该成为E一周结束。最后, SMTWTFS应该成为A对所有天。 输入和输出都必须是单个字符串。 由于这是code-golf,因此以字节为单位的最短代码为准。 测试用例: In Out | In Out -----------------------|-------------------- SuTu STu | SuTuWe STW SuTuSa STuS | SuWeTh SWT TuThSa TTS | TuThSu STT Su Su | Sa Sa WeTh WT | FrTh ThF WeTu …

9
求和持续时间
挑战 编写最短的代码,可以对标准输入中出现的所有持续时间求和。程序必须仅考虑与以下模式之一匹配的字符串,而忽略其余模式。 HH:MM:SS (it will be interpreted as HH hours, MM minutes and SS seconds) H:MM:SS (it will be interpreted as H hours, MM minutes and SS seconds) MM:SS (it will be interpreted as MM minutes, SS seconds) M:SS (it will be interpreted as M minutes, SS seconds) 与枚举模式匹配的字符串示例: 12:00:01 …

25
一个简单的模式
输入: 您选择的输入格式中的两位数字(我们称它们为m和n)和两个字符(我们称其为a和b)。 输出: 对于演练,请假装m=2, n=5, a='a', b='b'。 您的输出将是根据四个输入构建的字符串。让我们result用value 调用字符串""。首先,连击a到result m时间,所以串连a到result 2倍。result现在等于aa。其次,连击b到result m时间,所以串连b到result 2倍。result现在等于aabb。最后,如果结果已经比更长n,请截断result它,使其具有length n。否则,继续交替使用m的长度运行a,并b直到result有长度n。最终result是aabba,它有长度5。 测试用例: Input: m = 2, n = 4, a = A, b = B Output: AABB Input: m = 3, n = 8, a = A, b = B Output: AAABBBAA Input: m = 4, n …
17 code-golf  string  code-golf  arithmetic  code-golf  string  array-manipulation  rubiks-cube  code-golf  math  number  code-golf  tips  bash  code-golf  ascii-art  music  code-golf  arithmetic  code-golf  math  number  arithmetic  integer  code-golf  number  array-manipulation  code-golf  geometry  grid  set-partitions  code-golf  math  number  code-golf  combinatorics  code-golf  regular-expression  code-golf  permutations  code-golf  ascii-art  code-golf  number  array-manipulation  matrix  code-golf  kolmogorov-complexity  compile-time  cops-and-robbers  polyglot  cops-and-robbers  polyglot  code-golf  string  code-golf  string  ascii-art  matrix  animation  code-golf  ascii-art  code-golf  string  balanced-string  code-golf  integer  integer-partitions  expression-building 

2
编译正则表达式
在此任务中,您必须编写一个程序来读取正则表达式,并生成另一个程序,该程序输出该正则表达式是否接受输入字符串。输出必须是使用与提交相同的语言编写的程序。 输入值 输入是与以下ABNF匹配的正则表达式r(初始生产规则为REGEX): REGEX = *( STAR / GROUP / LITERAL / ALTERNATIVE ) STAR = REGEX '*' GROUP = '(' REGEX ')' LITERAL = ALPHA / DIGIT ALTERNATIVE = REGEX '|' REGEX 如果输入与此语法不匹配,则程序的行为未定义。 解释 将输入解释为正则表达式,其中*的Kleene-star(表示重复左参数零次或多次)|是替代方法,(并且)组且根本没有运算符串联在一起。分组优先于星形,星形优先于串联,串联优先于替代。 如果正则表达式匹配整个字符串,则认为该字符串可以接受。 输出量 该程序的输出是另一个与您的提交使用相同语言编写的程序,该程序在运行时以实现定义的方式读取字符串s,输出r是否接受s然后终止。输出可以以用户定义的方式完成,尽管对于接受和拒绝的程序必须只有两个不同的输出。 您可以假定输出程序的输入从不超过2 16 -1字节。 限制条件 您的提交或提交的任何程序均不得使用内置功能或 匹配正则表达式 转换正则表达式 编译正则表达式 从语法生成解析器 简化问题,使您的提交变得微不足道 计分 …

1
正则表达式验证正则表达式[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 2年前关闭。 构建一个将接受正则表达式字符串作为输入的正则表达式,并检查其是否有效。基本上,您的正则表达式应该能够验证自己。(任何无效的正则表达式都不应进行验证,因此您不能使用.*。;)) 您的风味必须得到众所周知的实现(Perl,sed,grep,gawk等)的完全支持,并且必须完全支持那些实现所支持的功能。[不用担心律师说话;我只是想消除所有可能导致智能***的漏洞。] 我会对此进行编码,但是我担心它会给那些知道和使用非功能丰富的风味的人带来优势。还是我的担心没有根据?
17 code-challenge  code-golf  code-golf  game  sudoku  code-challenge  math  ai-player  code-challenge  sorting  rosetta-stone  code-challenge  code-challenge  programming-puzzle  code-golf  number  code-golf  maze  code-golf  math  regular-expression  code-golf  sequence  code-golf  graph-theory  code-golf  string  word-puzzle  natural-language  brainfuck  metagolf  optimized-output  fastest-algorithm  code-golf  game-of-life  cellular-automata  code-golf  puzzle-solver  grid  code-golf  combinatorics  binary-tree  popularity-contest  code-challenge  code-golf  ascii-art  kolmogorov-complexity  brainfuck  metagolf  code-golf  c  date  code-golf  word-puzzle  crossword  word-search  code-golf  code-golf  quine  code-golf  string  random 

6
二进制栅栏
输入: n范围内的整数2 <= n <= 10 正整数列表 输出: 将整数转换为二进制表示形式(不带任何前导零),然后将它们全部连接在一起。 然后使用n围栏柱的数量确定构成“二进制围栏”的所有二进制子串。每个栅栏柱之间的空间(零)无关紧要(至少为1),但栅栏柱本身的宽度都应相等。 在这里,正则表达式的二进制子字符串应该与每个匹配n: n Regex to match to be a 'binary fence' Some examples 2 ^(1+)0+\1$ 101; 1100011; 1110111; 3 ^(1+)0+\10+\1$ 10101; 1000101; 110011011; 4 ^(1+)0+\10+\10+\1$ 1010101; 110110011011; 11110111100001111001111; etc. etc. You get the point 看n=4例子: 1010101 ^ ^ ^ ^ All …

2
正则表达式反向-分解正则表达式
问题 我有一堆需要在某些代码中使用的正则表达式,但是我使用的是不支持正则表达式的编程语言!幸运的是,我知道测试字符串将具有最大长度,并且仅由可打印的ASCII组成。 挑战 你必须输入一个正则表达式和一个号码n,并输出每一个可打印的ASCII(ASCII码32至126以下,组成的字符串到~长的,没有突出部或换行符)小于或等于n相匹配的正则表达式。您可能根本不会在代码中使用内置的正则表达式或正则表达式匹配函数。正则表达式将限于以下内容: 文字字符(和转义字符,使字符成为文字,因此\.是一个文字.,\n是一个文字n(等效于just n),并且\w等价于w。您不需要支持转义序列。) . -通配符(任何字符) 字符类,[abc]表示“ a或b或c”,[d-f]表示从d到f的任何值(所以d或e或f)。在字符类中唯一具有特殊含义的字符是[和](总是会被转义,所以不必担心),\(当然是转义符),^是在字符类的开头(这是一个否定) )和-(这是一个范围)。 |-OR运算符,交替。foo|bar表示foo或bar,并且(ab|cd)e匹配abe或cde。 * -匹配先前的令牌重复零次或多次,贪婪(它尝试重复尽可能多的次数) + -重复一次或多次,贪婪 ? -零或一遍 带括号的分组,为组令牌|,*。+, 要么? 输入正则表达式将永远是有效的(也就是说,你不必处理像输入?abc或(foo或任何无效的输入)。您可以按任意顺序输出字符串,但是每个字符串只能出现一次(不输出任何重复项)。 测试用例 输入:.*,1 输出:(空字符串), ,, ,... ,!"}~ 输入:w\w+,3 输出:ww,www 输入:[abx-z][^ -}][\\],3 输出:a~\,b~\,x~\,y~\,z~\ 输入:ab*a|c[de]*,3 输出:c,cd,ce,aa,cde,ced,cdd,cee,aba 输入:(foo)+(bar)?!?,6 输出:foo,foo!,foofoo,foobar 输入:(a+|b*c)d,4 输出:ad,cd,aad,bcd,aaad,bbcd 输入:p+cg,4 输出:pcg,ppcg 输入:a{3},4 输出:a{3} 获胜者,冠军 这是代码高尔夫球,所以最短的代码(以字节为单位)将获胜!

4
JavaScript中最短的URL正则表达式匹配
创建最短的正则表达式,以在JavaScript中运行时与文本中的URL大致匹配 例: "some text exampley.com".match(/your regular expression goes here/); 正则表达式需要 捕获用于http和https的所有有效URL。 不必担心与实际上不是有效URL的URL查找字符串不匹配 super.awesome/cool 作为JavaScript正则表达式运行时有效 测试标准: 比赛: http://example.com http://example.com/ http://example.com/super https://example.com/super example.com/super example.com example.com/su-per_duper/?add=yes&subtract=no example.com/archive/index.html twitter.com/#!/reply example.com/234ret2398oent/234nth codegolf.stackexchange.com/questions/464 crazy.wow.really.example.com/?cat=nth%3E example-example.com example1.com 不匹配: 例 超酷 早上好 我可以 你好。 这是一个测试,可能有助于澄清一下http://jsfiddle.net/MikeGrace/gsJyr/ 对于缺乏清晰性,我深表歉意,但我没有意识到匹配URL多么糟糕。

2
RX的ValiDate ISO 8601
挑战 查找最短的正则表达式 只会验证,即比赛中,每一个可能的日期在Proleptic公历(这也适用于所有日期在1582年首次执行前) 与任何无效日期都不匹配。 输出量 因此,输出是真实的还是错误的。 输入值 输入采用3种扩展的ISO 8601日期格式中的任何一种-无时间。 前两个是±YYYY-MM-DD(年,月,日)和±YYYY-DDD(年,日)。the日都需要特殊的外壳。这些扩展的RX天真地将它们分别匹配: (?<year>[+-]?\d{4,})-(?<month>\d\d)-(?<day>\d\d) (?<year>[+-]?\d{4,})-(?<doy>\d{3}) 第三种输入格式是±YYYY-wWW-D(年,周,日)。由于leap周模式复杂,因此比较复杂。 (?<year>-?\d{4,})-W(?<week>\d\d)-(?<dow>\d) 对这三个组合进行的基本但有效性不足的检查如下所示: [+-]?\d{4,}-((0\d|1[0-2])-([0-2]\d|3[01]) ↩ |([0-2]\d\d|3[0-5]\d|36[0-6]) ↩ |(W([0-4]\d|5[0-3])-[1-7])) 条件 一个闰年的Proleptic公历包含闰日 …-02-29,因此它是长366天,因此…-366存在。在序数可被4整除的任何年份中都会发生这种情况,除非它也能被400整除,否则不会被100整除。 该日历中存在零年,并且是a年。 一个漫长的一年,在ISO周历包含了第53周,其中一个可以称之为一个“ 闰周 ”。在1月1日是星期四的所有年份中都会发生这种情况,在所有leap年都是星期三的所有leap年都发生这种情况。事实证明,它通常每5或6年出现一次,呈看似不规则的模式。 一年至少有4位数字。不必支持位数超过10的年份,因为这已经足够接近宇宙的年龄(大约140亿年)。前导加号是可选的,尽管实际标准建议多于4位数字的年份需要使用它。 不得接受不完整的部分或截短日期。 日期标记,例如一个月的部分,也没有必须由可能被引用的一组相匹配。 规则 这是代码高尔夫球。没有执行代码的最短正则表达式将获胜。更新:您可以使用诸如递归和平衡组之类的功能,但是会被罚款10倍,然后与字符数相乘!现在,这与Hard code golf中的规则不同:Regex可除以7。较早的答案胜出。 测试用例 有效测试 2015-08-10 2015-10-08 12015-08-10 -2015-08-10 +2015-08-10 0015-08-10 1582-10-10 2015-02-28 2016-02-29 2000-02-29 0000-02-29 -2000-02-29 -2016-02-29 200000-02-29 …

2
匹配排列!
您的挑战是创建一个正则表达式,使其匹配自身的每个字符串排列,而不是其他任何内容。匹配项还必须区分大小写。 因此,例如,如果您的正则表达式为: ABC 它应该匹配(并且仅匹配)以下字符串: ABC ACB BAC BCA CAB CBA 它不应该匹配以下内容: AABC (contains an extra A) ABCD (contains an extra D) AC (no B) AAA (no B and C, extra 2 A's) abc (case-sensitive) 规则: 您可以使用任何喜欢的正则表达式。 有标准漏洞。 您的代码中必须至少包含两个不同的字符。这意味着类似1的解决方案是无效的。 正则表达式应仅包含可打印的ASCII,而不能包含其他任何内容。

4
匹配堆栈交换URL
序幕 安装了反XSS浏览器扩展程序后,Stack Snippets突然停止在整个Stack Exchange网络上正常工作。我再也无法从Stack Overflow中学到东西,无法查看有关用户体验的工作演示,而且最糟糕的是,无法在Programming Puzzles和Code Golf上测试JavaScript答案!拼命地寻找一种补救方法,并在设置中找到一个小的输入框,其中可以放置一个正则表达式。我无法将所有Stack Exchange网站都放在一个小盒子中,因此我寻求帮助。这就是那个问题。 任务 您的任务是创建一个匹配所有Stack Exchange网站URL的正则表达式,而不匹配不属于Stack Overflow Inc.的任何域。 您的正则表达式必须将所有URL与以下部分匹配: protocol:这将是http://或https://。 domain:这将是此列表中的一项: stackoverflow.com www.stackoverflow.com facebook.stackoverflow.com serverfault.com superuser.com meta.stackexchange.com webapps.stackexchange.com nothingtoinstall.com meta.webapps.stackexchange.com meta.nothingtoinstall.com gaming.stackexchange.com arqade.com thearqade.com meta.gaming.stackexchange.com meta.arqade.com meta.thearqade.com webmasters.stackexchange.com webmaster.stackexchange.com meta.webmasters.stackexchange.com meta.webmaster.stackexchange.com cooking.stackexchange.com seasonedadvice.com meta.cooking.stackexchange.com meta.seasonedadvice.com gamedev.stackexchange.com meta.gamedev.stackexchange.com photo.stackexchange.com photography.stackexchange.com photos.stackexchange.com meta.photo.stackexchange.com meta.photography.stackexchange.com meta.photos.stackexchange.com stats.stackexchange.com statistics.stackexchange.com …

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.