正则表达式匹配任何直到某些字符串TCL

时间:2014-04-07 19:11:11

标签: regex tcl

我正在尝试匹配某些字符串,如下所示:

apn xxxxx
      blah blah blah
      blah -blah blah blah -blah -blah blah-blah-blah
      blah-blah
      blah blah blah-1 blah-blah BLAH
      blah blah BLAH-2 blah-blahBLAH
      blah blah BLAH-3 blah-blahBLAH
      blah blah BLAH-4 blah-blahBLAH
      blah-blah blah-blah blah  1 blah-blah blah
      blah blah 2000
      blah blah 600
      ipv6 primary fc00:a:a::300
      ipv6 secondary fc00:a:a::400
      blah blah-blah blah-blah-blah-blah-blah blah
      blah blah-blahblah-blah-blah-blah-blah blah
      blah blah-blah-blah BLAH_BLAH_BLAH_BLAH
      blah-blah blah BLAH
      blah-blah blah 2000
    exit

我正在尝试将文字fc00:a:a::300ipv6 primary匹配作为锚点,同时使用xxxx作为关键字。我正在尝试使用一个工作的正则表达式模式,匹配所有可能包含任何字符的blah。有什么建议吗?

我已尝试使用\s[\w+\-]\s+ipv6\s+dns primary\s+,但无法匹配文字。

3 个答案:

答案 0 :(得分:0)

您可以尝试使用以下内容:

regexp -lineanchor -- {apn xxxxx.*?ipv6 primary\s*?([^\n]+)$} $text - match

您应该在变量fc00:a:a::300中获得$match

apn xxxxx将完全匹配。

.*?将匹配任何字符ipv6 primary

\s*?将匹配任何空格

([^\n]+)将匹配非换行符,直到... $(行尾)。

-lineanchor使$匹配所有行的结尾。

demo


如果您不想匹配apn xxxxx ... exit之外的那个,那么您可以使用以下内容:

regexp -lineanchor -- {apn xxxxx(?:(?!exit).)*?ipv6 primary\s*?([^\n]+)$} $text - match

(?:(?!exit).)*?将匹配除exit以外的任何字符。

demo

答案 1 :(得分:0)

apn xxxx[\s\S]*?ipv6 primary (.*)

应该这样做。

演示:http://regex101.com/r/tB5tJ0

答案 2 :(得分:0)

试试这个,

  1. 将变量中的冗长字符串设置为 设置{....        ....        ....}

  2. 应用此命令    regexp {。* ipv6 \ sprimary \ s +(\ S +)} $ a t t1

  3. t1的输出将为“fc00:a:a :: 300”。