Article View: comp.unix.shell
Article #4082Re: Quickie - Regexp for a string not at the beginning of the line
From: Ed Morton
Date: Fri, 26 Oct 2012 12:32
Date: Fri, 26 Oct 2012 12:32
79 lines
4983 bytes
4983 bytes
On 10/25/2012 11:45 PM, Rivka Miller wrote:
> Thanks everyone, esp this gentleman.
>
> The solution that worked best for me is just to use a DOT before the
> string as the one at the beginning of the line did not have any char
> before it.
That's fine but do you understand that that is not an RE that matches on
"$hello$ not at the start of a line", it's an RE that matches on "<any
char>$hello$ anywhere in the line"? There's a difference - if you use a tool
that prints the text that matches an RE then the output if the first RE existed
would be "$hello$" while the output for the second RE would be "X$hello$" or
"Y$hello$" or....
In some tools you can use /(.)$hello$/ or similar to ignore the first part of
the RE "(.)" and just print the second "$hello", but that ability and it's
syntax is tool-specific, you still can't say "here's an RE that does this",
you've got to say "here's how to find this text using tool <whatever>".
Ed.
> I guess, this requires the ability to ignore the CARAT as the beginning of the line.
>
> I am a satisfied custormer. No need for returns. :)
>
> On Oct 25, 7:11 pm, Ben Bacarisse <ben.use...@bsb.me.uk> wrote:
>> Rivka Miller <rivkaumil...@gmail.com> writes:
>>> On Oct 25, 2:27 pm, Danny <dann90...@gmail.com> wrote:
>>>> Why you just don't give us the string/input, say a line or two, and
>>>> what you want off of it, so we can tell better what to suggest
>>
>>> no one has really helped yet.
>>
>> Really? I was going to reply but then I saw Janis had given you the
>> answer. If it's not the answer, you should just reply saying what it is
>> that's wrong with it.
>>
>>> I want to search and modify.
>>
>> Ah. That was missing from the original post. You can't expect people
>> to help with questions that weren't asked! To replace you will usually
>> have to capture the single preceding character. E.g. in sed:
>>
>> sed -e 's/\(.\)$hello\$/\1XXX/'
>>
>> but some RE engines (Perl's, for example) allow you specify zero-width
>> assertions. You could, in Perl, write
>>
>> s/(?<=.)\$hello\$/XXX/
>>
>> without having to capture whatever preceded the target string. But
>> since Perl also has negative zero-width look-behind you can code your
>> request even more directly:
>>
>> s/(?<!^)\$hello\$/XXX/
>>
>>> I dont wanna be tied to a specific language etc so I just want a
>>> regexp and as many versions as possible. Maybe I should try in emacs
>>> and so I am now posting to emacs groups also, although javascript has
>>> rich set of regexp facilities.
>>
>> You can't always have a universal solution because different PE
>> implementations have different syntax and semantics, but you should be
>> able to translate Janis's solution of matching *something* before your
>> target into every RE implementation around.
>>
>>> examples
>>
>>> $hello$ should not be selected but
>>> not hello but all of the $hello$ and $hello$ ... $hello$ each one
>>> selected
>>
>> I have taken your $s to be literal. That's not 100 obvious since $ is a
>> common (universal?) RE meta-character.
>>
>> <snip>
>> --
>> Ben.
>
Technical Details
Message-ID:
<k6dvsb$sve$1@dont-email.me>Path:
arc1-ca.pugleaf.net!s9ni48506pbb.0!nntp.google.com!news.glorb.com!eternal-september.org!feeder.eternal-september.org!mx04.eternal-september.org!.POSTED!not-for-mailReferences:
<9eba5652-f814-41fa-83e4-460bca2be264@n16g2000yqi.googlegroups.com> <e6f60702-d85f-4aed-bc03-3147bb007ad8@googlegroups.com> <73f60cf3-d932-4366-a405-6767488560c6@q16g2000yqc.googlegroups.com> <0.485c579271f72431d3a7.20121026031110BST.87k3ue7zk1.fsf@bsb.me.uk> <d243ac78-ffca-4e93-b2dc-6b30ca7d2586@r6g2000yqd.googlegroups.com>Show Full Headers
Complete Article Headers
X-Google-Thread: 103b8b,540e62bbe775c345
X-Google-NewGroupId: yes
X-Google-Thread: 102b9a,540e62bbe775c345
X-Google-NewGroupId: yes
X-Google-Attributes: gid39ae015015,gid853c49a5d,domainid0,public,usenet
X-Google-Language: ENGLISH,ASCII-7-bit
Received: by 10.66.81.170 with SMTP id b10mr6387655pay.31.1351254731806;
Fri, 26 Oct 2012 05:32:11 -0700 (PDT)
Path: arc1-ca.pugleaf.net!s9ni48506pbb.0!nntp.google.com!news.glorb.com!eternal-september.org!feeder.eternal-september.org!mx04.eternal-september.org!.POSTED!not-for-mail
From: Ed Morton <mortonspam@gmail.com>
Newsgroups: comp.unix.shell,comp.lang.javascript,comp.lang.python,gnu.emacs.help,comp.emacs
Subject: Re: Quickie - Regexp for a string not at the beginning of the line
Date: Fri, 26 Oct 2012 07:32:10 -0500
Organization: A noiseless patient Spider
Lines: 80
Message-ID: <k6dvsb$sve$1@dont-email.me>
References: <9eba5652-f814-41fa-83e4-460bca2be264@n16g2000yqi.googlegroups.com> <e6f60702-d85f-4aed-bc03-3147bb007ad8@googlegroups.com> <73f60cf3-d932-4366-a405-6767488560c6@q16g2000yqc.googlegroups.com> <0.485c579271f72431d3a7.20121026031110BST.87k3ue7zk1.fsf@bsb.me.uk> <d243ac78-ffca-4e93-b2dc-6b30ca7d2586@r6g2000yqd.googlegroups.com>
Mime-Version: 1.0
Injection-Date: Fri, 26 Oct 2012 12:32:11 +0000 (UTC)
Injection-Info: mx04.eternal-september.org; posting-host="8db3055794626b3823aefe741b58e5e5";
logging-data="29678"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/Yb8Qr+HkLz5ZD3Kv9k0w5"
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:16.0) Gecko/20121010 Thunderbird/16.0.1
In-Reply-To: <d243ac78-ffca-4e93-b2dc-6b30ca7d2586@r6g2000yqd.googlegroups.com>
Cancel-Lock: sha1:9Td02FeOz0bkzE/tOehin1yNhVY=
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit