从文本

时间:2017-12-22 13:14:51

标签: regex

编辑:我的错,我没有正确解释。

所以我的问题是我有一个看起来像任何东西的文本字符串,并且会在其间和最后一个文本中附加[ATTACH] ** [ATTACH]文本,但现在我想要的只是选择最后一个它是否存在它不应该在文本之间选择它应该总是在最后。  我试图选择最后一个

[ATTACH]36[ATTACH]

没有从下面的文字中选择任何一个

Gdfhbghuhcghbhhijb
    [ATTACH=full]36[ATTACH]
    [ATTACH]36[ATTACH]
    foo
    bar
    foo
    bar
    foo
    foobar foobaz [ATTACH]36[ATTACH]

我在regex网站上尝试了很多,但总是失败,所以任何人都可以告诉如何使用正则表达式

2 个答案:

答案 0 :(得分:0)

您可以使用此正则表达式:

(?sim)(?:\[ATTACH=full\]36\[ATTACH\])(?!.*?(?:\[ATTACH=full\]36\[ATTACH\]))

您可以查看here

答案 1 :(得分:0)

问题编辑后

更新,以下应该有效:

(\[ATTACH]\d+\[ATTACH])(?!.*\[ATTACH]\d+\[ATTACH])

跟正则表达式完全匹配最后一个[ATTACH=full]36[ATTACH]

(\[ATTACH=full]36\[ATTACH])(?!.*\1)

取决于语言标记/s必须设置为指定.匹配\n

Perl示例:

perl -0777 -nE 'say for /(\[ATTACH=full]36\[ATTACH])(?!.*\1)/gs' <<END
[ATTACH=full]36[ATTACH]
  [ATTACH=full]36[ATTACH]
  [ATTACH]36[ATTACH]
  [ATTACH=full]36[ATTACH]
  [ATTACH=full]36[ATTACH]
  [ATTACH=full]36[ATTACH]
  [ATTACH]36[ATTACH]
  foo
  bar
  foo
  bar
  foo
  foobar foobaz
END

[ATTACH=full]36[ATTACH]