我对编程很陌生,所以请原谅我,如果这非常明显(这将是一个受欢迎的消息)。
我在空闲时间使用pregmatch进行了大量的PHP开发,并使用免费(开源?)Regex Tester编写了大部分表达式。
然而,我经常发现自己想要简单地快速提取一些内容,而我知道的唯一方法是编写我的表达式然后编写脚本,这可能是可笑的,但欢迎来到我的现实。 : - )
我想要的是一个简单的文本编辑器,我可以将表达式提供给(给定一个文件或一个充满粘贴文本的缓冲区)并让它解析表达式并返回一个只包含结果的文档。 / p>
我发现通常是正则表达式搜索/替换函数,就像在Notepad ++中我可以使用表达式轻松找到(并替换)所有实例,但我根本不知道如何只提取它...
它可能非常明显,表达式只能与逆相匹配吗?然后我可以使用类似的东西(只是我正在处理的表达式):
<a href="/browse/0/b/-dbm/a/0-0/1200000([^/]*)/0.html">([^<]*)</a>
并替换不匹配的所有内容。但我确信这是常见且简单的事情,我真的很感激任何发音者。
FWIW我知道grep而我可以使用它来做它,但我希望它们是更好的gui'ified解决方案我只是无知。
感谢。
扎克
我所希望的是在一套更标准的gui工具(即我可能已经使用过的工具)中工作的东西。我很欣赏所有的回复,但使用perl或vi或grep是我希望避免的,否则我会自己编写脚本(当然我已经编写过),因为它们都是相对强大的低级工具。
也许我不够清楚。作为高级系统管理员,cli工具对我来说很熟悉,我非常喜欢它们。但是我在家里工作时发现我的大部分时间花在gui上,比如Netbeans或Notepad ++。我只想知道使用这些工具实现基于正则表达式的数据提取的简单方法(因为在这些情况下我已经在使用它们了。)
模仿我所指的是this,它将在第一行显示一个表达式,在第二行显示一个url,然后提取(返回)数据。
这很丑陋(今晚我会把它拿下来,因为它可能有很多问题)。
无论如何,感谢您的回复。我很感激。
答案 0 :(得分:3)
如果你想要一个具有良好正则表达式支持的文本编辑器,我强烈推荐Vim。 Vim的正则表达式引擎是quite powerful,并且很好地集成到编辑器中。 e.g。
:g!/regex/d
这表示删除缓冲区中与模式regex
不匹配的每一行。
:g/regex/s/another_regex/replacement/g
这表示在匹配regex
的每一行上,执行另一次搜索/替换,将another_regex
的文字替换为replacement
。
如果您想使用命令行grep
或Perl / Ruby / Python / PHP单行任意其他工具,您可以通过该工具过滤当前缓冲区的文本并更新缓冲区以反映结果:< / p>
:%!grep regex
:%!perl -nle 'print if /regex/'
答案 1 :(得分:1)
你试过nregex.com吗?
http://www.nregex.com/nregex/default.aspx
这里有Netbeans的插件,但开发看起来停滞不前:
http://wiki.netbeans.org/Regex
http://wiki.netbeans.org/RegularExpressionsModuleProposal
你也可以试试The Regulator:
答案 2 :(得分:0)
大多数正则表达式引擎都允许您匹配正则表达式的反面。
通常带着!操作答案 3 :(得分:0)
我的建议是grep,cygwin如果你被困在Windows机器上。
echo "text" | grep <a href="/browse/0/b/-dbm/a/0-0/1200000([^/]*)/0.html">([^<]*)</a>
OR
cat filename | grep <a href="/browse/0/b/-dbm/a/0-0/1200000([^/]*)/0.html">([^<]*)</a>
答案 4 :(得分:0)
我知道grep已被提及,你不想要一个cli工具,但我认为ack值得提及。
ack是一个像grep这样的工具,旨在实现 有大树的程序员 异构源代码。
ack纯粹是用Perl编写的,而且 利用Perl的力量 正则表达式。
答案 5 :(得分:0)
可以使用优秀的文本编辑器来执行您描述的操作。我使用EditPadPro进行搜索和替换功能,它还有一些其他很好的功能,包括大多数主要格式的代码着色。搜索面板功能包括一个正则表达式模式,允许您输入正则表达式,然后搜索第一个实例,该实例标识您的表达式是否与相应的信息匹配,然后为您提供迭代替换或所有实例的选项。
答案 6 :(得分:-1)
我喜欢的是类似的东西 简单的文本编辑器,我可以喂我的 表达式(给定文件或 缓冲区充满粘贴文本)并拥有 它解析表达式并返回一个 仅包含结果的文件。
你刚刚描述了grep。这正是grep所做的。怎么了?