【问题标题】:regex to remove text between two strings in TextWrangler正则表达式删除 TextWrangler 中两个字符串之间的文本
【发布时间】:2012-10-17 11:59:11
【问题描述】:

我已经非常努力地寻找答案。

基本上,我要做的是删除一些导出的 vCard 中的某些字段,这些 vCard 是我使用 Mac 的联系人应用程序通过 Automator 导出的。

我设法删除了那些单行字段,例如生日和社交网络。但是,有一个特定的字段占用了多行,我假设它是原始图像的 base64 编码版本 - PHOTO 字段。

这是字段开头的示例: PHOTO;ENCODING=b;TYPE=JPEG:/9j/4AAQSkZJRgABAQAAAQABAAD/4gxYSUNDX1BST0ZJTEUA

结尾不同,所以我用下一行的开头作为结尾: CATEGORIES

我最接近的是PHOTO;ENCODING.*CATEGORIES

不幸的是,它似乎只选择了整个块的第一行。

有没有办法解决这个问题?我正在尝试在我的 Mac 上的 TextWrangler 中执行此操作。

【问题讨论】:

  • 我对 textwrangler 一无所知,但在其他语言中,您需要明确告诉正则表达式引擎您匹配的内容是多行的。例如,在 Perl 中,您需要在正则表达式的末尾加上 /m。如果没有/m. 将不会匹配换行符。

标签: regex grep vcf-vcard textwrangler


【解决方案1】:

你需要的是 .* 而不是 :-

(.+[\r\n]+).*

因为 .不匹配换行符。

括号中的模式匹配由以换行符结尾的字符序列组成的多行。

【讨论】:

    【解决方案2】:

    在朋友的帮助下,我尝试了 TextWrangler

    ATTACH;ENCODING=BASE64([^\n]*\n )*[^\n]*\n 
    

    它匹配每个附件

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-20
      • 2018-01-16
      • 2016-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-21
      相关资源
      最近更新 更多