繁体   English   中英

在字符序列上使用 grep case 场景

[英]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 其他类可以在HEREHERE 中看到。 这些字符类也存在差异,例如类中是否包含_以及是否包含非 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM