regex - Bash shell(grep) equivalent of this python regular expression? -


i have written regular expression match hyphenated word in python

regexp = r"[a-z]+(?:-[a-z]+)*" 

it matches words 0 or more hyphens. e.g. abc,acd-def,x-y-y etc. however, can't find grouping operator ?: shell(for instance using grep). seems me feature of python regex not standard regex.

can please tell me how write same regex in shell?

(?:pattern) matches pattern without capturing contents of match. used following * allow specify 0 or more matches of contents of ( ) without creating capture group. affects result in python if used re.search(), matchobject not contain part (?: ). in grep, result isn't return in same way, can remove ?: use normal group:

grep -e '[a-z]+(-[a-z]+)*' file 

here i'm using -e switch enable extended regular expression support. output each line matching pattern - can add -o switch print matching parts.

as mentioned in comments (thanks), is possible use back-references (like \1) grep refer previous capture groups inside pattern, technically behaviour being changed removing ?:, although isn't you're doing @ moment doesn't matter.


Comments

Popular posts from this blog

python - pip install -U PySide error -

arrays - C++ error: a brace-enclosed initializer is not allowed here before ‘{’ token -

cytoscape.js - How to add nodes to Dagre layout with Cytoscape -