[英]using grep case scenario on character sequence
尝试在#hīc"
使用 grep 表达式grep -r -i '#\\w[ēāīōū]*\\w+\\"' *.html
捕获字符串#hīc"
。 我在regex101 站点上测试了 regex 字符串,它在那里工作。 Grep 3.4 对比
您遇到的问题是+
。 POSIX grep 中的 BRE 没有+
表示 1 或更多,这将被解释为 grep 将寻找的文字'+'
。
POSIX grep 中也不支持\\w
速记字符类(尽管它不是被禁止的,并且某些平台,例如 BSD 和 OS X 确实有\\w
支持。)
标准的 POSIX 字符类将是[:alnum:]
和一些支持的[:word:]
或[:name:]
,具体取决于您的本地设置和 grep,相当于\\w
。 其他类可以在HERE和HERE 中看到。 这些字符类也存在差异,例如类中是否包含_
以及是否包含非 ascii 字母。
对于相同的匹配(确保 1 个或多个而不是 0 个或多个*
单独)使用\\w\\w*
而不是\\w+
(或者[[:alnum:]][[:alnum:]]*
如果您的 grep 没有支持\\w
)
这适用于 BSD / Mac grep:
echo 'line 1
line 2
#hīc"
line 4' | grep '#\w[ēāīōū]*\w\w*"'
#hīc"
或者使用 GNU grep 中的 PCRE 引擎来获得 PCRE 兼容的正则表达式。 这就是 regex101 中使用的内容。
echo 'line 1
line 2
#hīc"
line 4' | ggrep -P '#\w[ēāīōū]*\w+"'
#hīc"
但是-P
仅在 GNU grep 中; 不在 POSIX 中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.