正则提正则表达式取中间文本的内容?

Bash命令行中,当子字符串在双引号之间时,我能够获得子字符串的索引.

但是,在我的应用程序中,我不知道在这个例子中“a”的字符是什么.因此,我认为我可以用接受“(”之外的任何字符的正则表达式替换“a”.我认为/ [^(} /将是我需要的.但是,我无法获得Awk索引命令使用任何形式的正则表达式代替“((((在示例中为”a“).

更新:William Pursell指出索引操作不接受正则表达式作为第二个操作数.

最终,我试图完成的是提取位于四个或更多“(”,后跟一个或多个“)”之后的子串. Dennis Williamson使用以下代码提供了解决方案:

要在一系列序列之后得到第一个非开括号的位置:

这显示了子串“((([[^(]”(20))的位置以及括号(24)后面的字符的位置.

第二个其实已经很接近了,把通配的“.”换成只匹配数字的“\d”就可以了,差不多长这样:

然后取值的时候,取括号里的分组:

我要回帖

更多关于 正则表达式取中间文本 的文章

 

随机推荐