.
.
regexp - 为一个字符串进行正则表达式匹配
regexp ?switches? exp string ?matchVar? ?subMatchVar subMatchVar ...?
如果正则表达式exp匹配上了string的部分或全部后就返回1,否则返回0。(指定了-inline后的情况如下)(正则表达式语法匹配描述在re_syntax中。)
如果指定了string后面的可选变元,那么matchVar将被赋值为于模式匹配的那部分字符串,第一个subMatchVar匹配第一个子模式匹配到的字符串,其它的以此类推。
如果紧接着regexp的第一个变元以-开头,那么就会被当作可选项来处理,可以使用的选项如下:
regexp -inline -- {/w(/w)} " inlined "
→ in n regexp -all -inline -- {/w(/w)} " inlined "
→ in n li i ne e
如果没有subMatchVars比子模式的数量多或者子模式没有匹配到字符串,相应的subMatchVar将被设为-1,如果指定了-indices将返回一个空字符串。
寻找第一个以foo开头但不是foobar的字符串并且把余下的字符存入一个变量中:
regexp {/<foo(?!bar/>)(/w*)} $string -> restOfWord
注意整个匹配的子字符串已经被放置到变量->中,这样看起来比较好看,因为我们对它的值并没有兴趣。
寻找词badger在字符串中的索引,然后存储在变量location:
regexp -indices {(?i)/<badger/>} $string location
计算字符串中八进制数的个数:
regexp -all {[0-7]} $string
列出字符串中所有的词:
regexp -all -inline {/S+} $string