关于资源:练习正则表达式

Practicing regex

我想更好地学习regex,这样它对我来说就变得更自然了。通常,regex可以轻松解决的问题我甚至不考虑使用它。

有人能指导我找到一个资源,它可以提供类似于Python挑战中的一个具有挑战性的regex问题,这个问题类似于这样,但更像是一个谜:

given a text file with lower and uppercase letters, match all lowercase letters surrounded by exactly 3 uppercase letters.

这只是其中一个问题的原因…如果问题没有示例那么明显,那就没问题了。

编辑:只是为了澄清…我不是在找软件,我是在找问题。但我会把它变成一个wiki,所以我们可以在这里获得尽可能多的资源。


以下是迄今为止在问题集、软件以及我发现的其他东西方面给出的信息。

问题

  • 雷格克斯问了-柯蒂斯·塔克
  • ACM在线法官-JavaMonkey79
  • Python挑战
  • 编码器

正则表达式

  • Expresso-Steven Sudit(.net)
  • Regex教练-Nytsua(Perl)
  • Regexr(操作脚本?)
  • Regex英雄(.net)
  • ReGEX:在线正则表达式测试(Java)
  • 在线javascript正则表达式测试仪(javascript)

该死。。。一大堆关于regexlib的东西

销售订单上的相关职位

  • 有免费的在线引用常用的正则表达式吗?
  • 常用正则表达式

在堆栈溢出时搜索regex标记的问题,并尝试回答它们。


我能建议一些不同于我个人经验的练习regex吗?

例如,当您刚刚合并了一些代码,并且意外地将一些冲突标记为已解决时,应用它如何?我怎样才能找到所有冲突的文件?编写一个正则表达式来搜索代码中的冲突标记(<<<< ====等…)

另一个例子是,有人重构了一个类,在这个类中使用了所有代码,它被称为foo.bar.baz;,现在它是bar.baz.foo;编写一个正则表达式来查找第一个类,并用第二个类替换第一个类。

这些示例可能与您的工作有关,也可能与您的工作无关,但我相信您会遇到在日常活动中使用正则表达式的需要。当你遇到它时,勇敢地去使用正则表达式:)它会让你在开始时慢一点,但一旦你变得更舒服,你就会达到你的目标。


我强烈推荐expresso(http://www.ultrapico.com/expresso.htm),尤其是在使用.net的情况下。它有助于构建和分析正则表达式,并将生成代码。它为我节省了许多小时。


使用此网站学习regex

1
   http://qntm.org/files/re/re.html

为了练习使用这个网站

1
   http://www.regexr.com/

你可以试试雷加考奇。它允许您根据自己的目标字符串交互式地试验正则表达式。


你可能会在编程比赛网站上找到一些宝石:这里。当然,这些并不是特定于正则表达式的,但肯定有一些解决方案属于这个领域。


使用命令行(或类似acme或wily的面向shell的窗口编辑器),并使用sed和awk将使用的数据从原始形式转换为希望看到的格式,或其他程序需要的格式。由于sed和awk使用正则表达式来查找要处理的行(通过模式匹配),因此在学习这些工具的同时,您将开发自己的技能。

我建议在命令行中工作,因为每一位数据和脚本都有一些文本,您必须查找和处理这些文本,这些文本通常来自更大的文件。所以你也可以使用grep的正则表达式来减少要考虑的行数,但是我通常只使用

1
sed -n -e '/regexp/p'

查找行,因为稍后我可以用替换来更新它

1
sed -e '/lineregexp/s,oldregex,newtext,'

对于真正高级的用法,您可以在运行时使用sed更新脚本,而不是在复杂的if/case语句或命令行选项中进行编码,甚至更改脚本的结构,但这超出了此答案的范围。

编辑:从第二个示例中删除了p。