我在一个文件中有一个字符串说:
abc
字符串
或
def abc
型
我想匹配abc
,这样它就可以出现在行的开头或空白之后。
我可以通过匹配多个模式来实现,用|
分隔,比如:
/^abc|[[:blank:]]+abc/
型
但是是否有某种方法可以包含^
,即字符串的开头类似于字符类。^
在字符类的开头意味着求反,其他位置意味着只匹配插入符号('^')字符。
此外,在我原来的例子中,字符串不仅仅是abc
,而是一个与复杂正则表达式匹配的字符串,所以我希望它尽可能干净。我在awk
脚本中匹配这个正则表达式。虽然我仍然包含bash
标记,因为system()
函数仍然可以在其中使用。速度对我来说并不重要,在我的例子中,但清晰度可以
3条答案
按热度按时间wwodge7n1#
使用捕获组:
字符串
它将匹配字符串的开头或一串空格。如果您不需要在匹配中使用
abc
之前的所有空格,而只需要最后一个空格,则可以删除+
。33qvvth12#
这应该做到:
字符串
以
^
start或[[:blank:]]
开始,然后abc
jtw3ybtb3#
开始或行
^
是不是一个字符,它是一个锚,所以把它放在一个字符类以及\A
,$
,\z
或\b
没有意义。在你的例子中,你只需要测试wordboundary,不需要使用一个会减慢正则表达式速度的捕获组:
字符串
这是匹配
abc
时,由行首或非字字符前缀。Demo