我需要从文档中分离出一堆图像网址,其中图像与这样的名称相关联:
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列表,每行一个。
通过检查“查找”对话框窗口中的“正则表达式”复选框,我尝试various ways使用Textpad中的正则表达式识别非URL数据,但Textpad似乎不喜欢其中任何一个。< / p>
在
下Configure->Preferences->Editor
有一个选项:
"Use POSIX regular expression syntax"
与什么相反?
执行此正则表达式操作的问题是否可能与Textpad实现正则表达式的一些怪癖有关?
答案 0 :(得分: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”版本。唯一的区别似乎是在默认情况下,分组parens ()
和Occurance curlies {}
的转义以及POSIX版本中没有转义。
考虑到这一点,要在TextPad中使用“使用POSIX正则表达式语法”选项完成工作,请使用以下内容替换上面的“Find in
”表达式:
Find in: ^[^"]*"([^"]*)"
答案 1 :(得分:3)
除POSIX外,还有Perl样式的正则表达式。
答案 2 :(得分:2)
原始的基本正则表达式,例如可以在“sed”上找到,与我们最常使用的有一些不同。例如,您使用\(
和\)
来表示组,而不是(和),并且没有“+”修饰符。
另外,我注意到链接的问题是你的“*”在括号内而不是在里面。这意味着第一组只匹配一个字符。