Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

comment on

( [id://3333]=superdoc: print w/replies, xml ) Need Help??

Esteemed Monks

I am trying to solve a problem which seems to require negative lookbehind regexes, which I never used. And, based on the results I am getting, it looks like I don't understand a **** of it :) I hope you can easily point out where my reasoning is failing.

I have a "normalized" hosts file; each line matches one of the following patterns:

^\s*$ (empty line) ^\s*#.*$ (comment line) ^[a-fA-F0-9:\.]+(\s+[a-zA-Z0-9\.-]+)+\s*$ (host record)

(The third regex could be narrowed down quite a bit, but let's KISS).

Now, in order to delete spurious lines, I would like to delete all those records which contain the host name (qualified or unqualified), but don't start with the right address of the machine (either the "local" version, 127.0.1.1 or, say, 10.20.11.99).

I tried several ways to match a whole line with no success, so I tried to start over simple. So far, I got only a partial check working (partial as in: covers only one, very specific subcase), namely:

(?<!10\.20\.11\.99\s)kvm-test-v06.+

and I must say I am quite surprised that a slightly different pattern doesn't match (or actually matches more than expected):

(?<!10\.20\.11\.99\s)kvm-test-v06.*

All other attempts to match a whole line, containing fully-qualified/unqualified name of the host somewhere, but preceded by an address other than 127.0.1.1 or 10.20.11.99 failed badly.

I am sure I am missing something fundamental and stupid, but I can't see that. Can you help me find it out?

A sample hosts file to test against:

127.0.0.1 localhost 10.20.11.99 kvm-test-v06.example.com kvm-test-v06 # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters # Spurious records 1.2.3.4 litter trash kvm-test-v06.example.com garbage 1.2.3.5 kvm-test-v06 more garbage 1.2.3.6 litter kvm-test-v06 1.2.4.7 kvm-test-v06.example.com kvm-test-v06

Thanks in any case

Ciao!
--bronto


In theory, there is no difference between theory and practice. In practice, there is.
pmsig

In reply to Misunderstanding negative look behind by bronto

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":



  • Are you posting in the right place? Check out Where do I post X? to know for sure.
  • Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
    <code> <a> <b> <big> <blockquote> <br /> <dd> <dl> <dt> <em> <font> <h1> <h2> <h3> <h4> <h5> <h6> <hr /> <i> <li> <nbsp> <ol> <p> <small> <strike> <strong> <sub> <sup> <table> <td> <th> <tr> <tt> <u> <ul>
  • Snippets of code should be wrapped in <code> tags not <pre> tags. In fact, <pre> tags should generally be avoided. If they must be used, extreme care should be taken to ensure that their contents do not have long lines (<70 chars), in order to prevent horizontal scrolling (and possible janitor intervention).
  • Want more info? How to link or How to display code and escape characters are good places to start.
Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others pondering the Monastery: (6)
As of 2024-04-23 07:26 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found