3

我需要从图像与这样的名称相关联的文档中分离出一堆图像 url:

bellpepper = "http://images.com/bellpepper.jpg"
cabbage = "http://images.com/cabbage.jpg"
lettuce = "http://images.com/lettuce.jpg"
pumpkin = "http://images.com/pumpkin.jpg"

我想通过删除变量名、等号和双引号从文件中删除除 URL 之外的所有文本,因此我有一个新文件,它只是一个 URL 列表,每行一个。

通过选中“查找”对话框窗口中的“正则表达式”复选框,我尝试了各种在 Textpad 中使用正则表达式识别非 URL 数据的方法,但 Textpad 似乎不喜欢其中的任何一个。

在下面

Configure->Preferences->Editor

有一个选项:

"Use POSIX regular expression syntax"

相对于什么?

我执行此正则表达式操作的问题是否可能与 Textpad 的正则表达式实现的一些怪癖有关?

4

3 回答 3

4

POSIX 替代方案与 TextPad 默认设置相反。从搜索/替换帮助文档:

TextPad 的正则表达式基于 POSIX 标准 P1003.2,但语法可以是 POSIX 或 UNIX 扩展正则表达式(默认)。

要在 TextPad 中完成工作,请使用以下命令:

Find in: ^[^"]*"\([^"]*\)"
Replace with: \1

编辑:

分解表达式:

^ - start of line
[^"]* - in a set the caret ^ is for negation, 
        so a greedy match of anything that is not a "
        in this case, everything up to the first quote
" - the first quote per line in your source text
\(...\) - puts together a group that can be referenced later
[^"]* - same explanation as above, this time matching the url in question
" - the last quote on the line

此外,查看 TextPad 中 Regex 的帮助文档,有一张法律表达式图表并排列出了“默认”和“POSIX”版本。唯一的区别似乎是在 Default 中对 Grouping parens()和 Occurance curlies{}进行了转义,并且在 POSIX 版本中没有转义。

考虑到这一点,要在选中“使用 POSIX 正则表达式语法”选项的情况下在 TextPad 中完成工作,请将上面的“ Find in”表达式替换为以下内容:

Find in: ^[^"]*"([^"]*)"
于 2009-07-17T14:25:30.663 回答
3

除了 POSIX,还有Perl风格的正则表达式。

于 2009-07-17T14:21:31.687 回答
2

最初的基本正则表达式,例如可以在“sed”上找到的,与我们最常用的有一些不同。例如,您使用\(and\)来表示组,而不是 (and),并且没有“+”修饰符。

另外,我在链接的问题上注意到您的“*”在括号外而不是在括号内。这意味着在第一组中只会匹配一个字符。

于 2009-07-17T14:26:03.613 回答