如何为以同一行中的特定文本开头和结尾的字符串编写正则表达式

时间:2015-11-15 11:06:43

标签: regex sed

我想写一个正则表达式来搜索以' test1'开头的字符串。并以第一个结尾'结束。在同一行。

我试过

test1[^end]*end

但失败了。任何建议/提示将不胜感激。

我正在尝试使用' sed'和测试字符串是:

test1123andendtest2456end

我在尝试什么:

echo 'test1123andendtest2456end'| sed -e 's/test1.*end/matrix/'

结果:

matrix

我期待什么:

matrixtest2456end

2 个答案:

答案 0 :(得分:1)

应该是:

^test.*end$
  • ^是该行的开头
  • test是文字测试
  • .*表示任何字符中的零个或多个。 * 贪婪的行为意味着它会消耗尽可能多的字符来满足条件。这包括使用字符串 end 的实例,只要在结尾处还有一个实例。
  • end是文字 end
  • $是该行的结尾。

旁注: *运算符的贪婪在此示例中并不重要,因为最终结尾以行尾结束$

默认情况下,

sed使用基本posix常规表达式。它们在manual of grep

中得到了很好的解释

答案 1 :(得分:0)

试试这个

^test1(.+)end$

如果您想尝试代码:https://regex101.com/