如何用mawk指定正则表达式量词?

即时学习

我熟悉指定的有界正则表达式量词的概念,如下所示:

Quantifier  Legend               Example    Sample Match

{3}         Exactly three times  \D{3}      ABC
{2,4}       Two to four times    \d{2,4}    156
{3,}        Three or more times  \w{3,}     regex_tutorialer

但是,我无法mawk在手册页或在线中找到类似上述内容的内容。

mawk命令是否具有此功能,或者有不同的方法来实现相同的效果?

我正在使用版本 1.3.3

斯蒂芬·查泽拉斯(Stephane Chazelas)

间隔regexp运算符在POSIX兼容的awk实现中受支持

但作为awk最初并不支持它们(也没有NAWK也不mawk也不GAWK),还有几个实现不支持他们像mawk时,一个真实的awk(最初由Brian Kernighan的保持下去,kawk),直到前几天,Solaris /bin/awk,Solaris /bin/nawk,这awk是大多数BSD的简称。

与for一样egrep,有几种实现方式反对增加对它们的支持,因为它们会破坏向后兼容性(与\{x,y\}所使用的BRE中没有类似的问题grep)。

\w\d\D是它们通常不支持perl的正则表达式扩展(busybox的awkgawk(当不在POSIX模式)支持\w)。标准等同物将是[[:alpha:]_][[:digit:]][^[:digit:]]分别,但不被支持mawkyet¹。

在Solaris上,您需要使用/usr/xpg4/bin/awk

对于较旧的GNU版本awk,您必须使用该--re-interval选项,或者POSIXLY_CORRECT=anything在环境中以支持正则表达式间隔的方式启动它

随着执行不支持他们,你可以使用的组合?+以及*

  • x{1,3}->xx?x?(x|xx|xxx)
  • x{1,} -> x+
  • x{0,} -> x*
  • x{3,}->xxx+xxxx*
  • x{3,6} -> xxxx?x?x?
  • 等等。

¹反正mawk不支持本地化或者多字节字符,所以你还不如限制为ASCII字符和使用[_a-zA-Z][0-9]以及[^0-9]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Java正则表达式不遵守指定的量词

来自分类Dev

如何使正则表达式量词按预期工作?

来自分类Dev

Vim正则表达式-量词

来自分类Dev

正则表达式惰性量词

来自分类Dev

量词的正则表达式组合*?

来自分类Dev

正则表达式-意外量词

来自分类Dev

简化正则表达式量词

来自分类Dev

正则表达式-无效的量词

来自分类Dev

正则表达式量词Java

来自分类Dev

如何用sed表达此正则表达式?

来自分类Dev

如何用sed表达此正则表达式?

来自分类Dev

如何用正则表达式替换文本?

来自分类Dev

如何用正则表达式选择任意位数?

来自分类Dev

正则表达式:如何用“ =”而不是“!=”分隔

来自分类Dev

如何用正则表达式替换字符序列?

来自分类Dev

如何用正则表达式替换WebStorm / PhpStorm

来自分类Dev

如何用正则表达式匹配以$开头的变量?

来自分类Dev

如何用if语句匹配正则表达式

来自分类Dev

如何用正则表达式表示文本块?

来自分类Dev

如何用|进行正则表达式?

来自分类Dev

如何用正则表达式匹配数据

来自分类Dev

如何用正则表达式进行模式替换?

来自分类Dev

如何用方括号构建正则表达式

来自分类Dev

如何用正则表达式计算0.05的倍数

来自分类Dev

正则表达式:如何用“ =”而不是“!=”分隔

来自分类Dev

如何用变量替换vim正则表达式

来自分类Dev

如何用正则表达式替换字符序列?

来自分类Dev

如何用正则表达式忽略空格?

来自分类Dev

如何用if语句匹配正则表达式