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吗?
例如,当您刚刚合并了一些代码,并且意外地将一些冲突标记为已解决时,应用它如何?我怎样才能找到所有冲突的文件?编写一个正则表达式来搜索代码中的冲突标记(
另一个例子是,有人重构了一个类,在这个类中使用了所有代码,它被称为
这些示例可能与您的工作有关,也可能与您的工作无关,但我相信您会遇到在日常活动中使用正则表达式的需要。当你遇到它时,勇敢地去使用正则表达式:)它会让你在开始时慢一点,但一旦你变得更舒服,你就会达到你的目标。
我强烈推荐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。