我在文件中输入一个字符串:
abc
或
def abc
我想匹配abc
,使其可以出现在行的开头或空白之后。
我可以通过匹配多个模式来做到这一点,并用|
分隔,例如:
/^abc|[[:blank:]]+abc/
但是有某种方法可以包含^
,即字符串的开头类似于字符类。
^
表示取反,其他位置表示刚匹配 carrot('^')字符。
此外,在我的原始情况下,字符串不仅是abc
,而是与复杂的正则表达式匹配的字符串,因此我希望它尽可能整洁。我在awk
脚本中匹配此正则表达式。尽管我仍然包含bash
标签,因为system()
函数仍可以在其中使用。在我看来,速度对我来说并不重要,但清晰度很重要。
答案 0 :(得分:3)
使用捕获组:
(^|[[:blank:]]+)abc
它将匹配字符串的开头或一系列空格。如果您不需要比赛中+
之前的所有空格,而是最后一个,则可以删除abc
。
答案 1 :(得分:2)
这应该做:
/(^|[[:blank:]])abc/
从^
开始或从[[:blank:]]
开始,然后从abc
答案 2 :(得分:2)
开头或第^
行不是不是字符,它是锚点,因此将其置于 character 类和{{ 1}},\A
,$
或\z
。
在您的情况下,您只需要测试字边界,就无需使用捕获组来减慢正则表达式的速度:
\b
以行首或非单词字符开头时,这与\<abc
相匹配。