首页 > 解决方案 > 如何匹配字符类中字符串“like”的开头?

问题描述

我在文件中有一个字符串说:

abc

或者

def abc

我想匹配abc它可以出现在行首或空白之后。

我可以通过匹配多个模式来做到这一点,用以下方式分隔|

/^abc|[[:blank:]]+abc/

但是有什么方法可以包括字符串的开头,^比如字符类。

^在字符类的开头意味着否定,其他位置意味着只匹配胡萝卜('^') 字符

另外,在我原来的情况下,字符串不仅仅是abc,而是一个与复杂正则表达式匹配的字符串,所以我希望它尽可能干净。我在awk脚本中匹配这个正则表达式。尽管我仍然包含bash标签,因为system()仍然可以在其中使用功能。就我而言,速度对我来说并不重要,但清晰度却很重要。

标签: regexbashawk

解决方案


使用捕获组:

(^|[[:blank:]]+)abc

它将匹配字符串的开头或一系列空格。+如果您不需要abc比赛中前面的所有空白,但最后一个,您可以放弃。


推荐阅读