我正在尝试匹配某些字符串,如下所示:
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::300
与ipv6 primary
匹配作为锚点,同时使用xxxx
作为关键字。我正在尝试使用一个工作的正则表达式模式,匹配所有可能包含任何字符的blah
。有什么建议吗?
我已尝试使用\s[\w+\-]\s+ipv6\s+dns primary\s+
,但无法匹配文字。
答案 0 :(得分:0)
您可以尝试使用以下内容:
regexp -lineanchor -- {apn xxxxx.*?ipv6 primary\s*?([^\n]+)$} $text - match
您应该在变量fc00:a:a::300
中获得$match
。
apn xxxxx
将完全匹配。
.*?
将匹配任何字符ipv6 primary
。
\s*?
将匹配任何空格
([^\n]+)
将匹配非换行符,直到... $
(行尾)。
-lineanchor
使$
匹配所有行的结尾。
如果您不想匹配apn xxxxx ... exit
之外的那个,那么您可以使用以下内容:
regexp -lineanchor -- {apn xxxxx(?:(?!exit).)*?ipv6 primary\s*?([^\n]+)$} $text - match
(?:(?!exit).)*?
将匹配除exit
以外的任何字符。
答案 1 :(得分:0)
答案 2 :(得分:0)
试试这个,
将变量中的冗长字符串设置为 设置{.... .... ....}
应用此命令 regexp {。* ipv6 \ sprimary \ s +(\ S +)} $ a t t1
t1的输出将为“fc00:a:a :: 300”。