Date: Mon, 26 Sep 2011 22:02:51 -0400 From: grarpamp <grarpamp@gmail.com> To: freebsd-questions@freebsd.org Subject: Regex Wizards Message-ID: <CAD2Ti29Uvz6tBp60SYnD-5bJ8Jf=ThbVG5UUU21NWmmqOrO5SA@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
Under the ERE implementation in RELENG_8, I'm having trouble figuring out how to group and backreference this. Given a line, where: If AAA is present, CCC will be too, and B may appear in between. If AAA is not present, neither CCC or B will be present. DDDD is always present. Junk may be present. Match good lines and ouput in chunks. echo junkAAAABCCCDDDDjunk | \ This works as expected: sed -E -n 's,^.*(AAAB?CCC)(DDDD).*$,1 \1 2 \2,p' 1 AAABCCC 2 DDDD But making the leading bits optional per spec does not work: sed -E -n 's,^.*(AAAB?CCC)?(DDDD).*$,1 \1 2 \2,p' 1 2 DDDD Nor does adding the usual grouping parens: sed -E -n 's,^.*((AAAB?CCC)?)(DDDD).*$,1 \1 2 \2,p' 1 2 How do I group off the leading bits? Or is this a limitation of ERE's? Or a bug? Thanks.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAD2Ti29Uvz6tBp60SYnD-5bJ8Jf=ThbVG5UUU21NWmmqOrO5SA>