Python Regex Removing One Too Many...


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Python Regex Removing One Too Many...
# 1  
Old 03-01-2014
Python Regex Removing One Too Many...

Well, I'm a python noob and my last post here I was introduced to Regex. I thought this would be easy since I knew Regex with Bash. However, I've been banging my head a while to extract an ip address from ifconfig with this:

Code:
#!/usr/bin/python

import re
import subprocess
from subprocess import Popen, PIPE

pattern = re.compile(r'inet.\S+(\d+\.\d+\.\d+\.\d+)')

p1 = Popen(["/sbin/ifconfig"], stdout=subprocess.PIPE)

output = p1.communicate()[0]
result = re.findall(pattern, output)

print result[1]

Unfortunately I'm getting one too characters cut out. I should get 10.0.0.139 instead of the following:

Code:
$ ./saturday.py 
0.0.0.139

Anyone see where I went wrong?
# 2  
Old 03-01-2014
OSX 10.7.5, Python 2.7.3.
Try:-
Code:
pattern = re.compile(r'inet.(\S+\d+\.\d+\.\d+\.\d+)')

# 3  
Old 03-01-2014
Actually I did try that before posting. Here's what I get:

Code:
$ ./sat.py 
addr:10.0.0.139

No good for me as I'm trying to cut after the semi-colon.
# 4  
Old 03-01-2014
Hi,
Try to replace:
Code:
pattern = re.compile(r'inet.\S+(\d+\.\d+\.\d+\.\d+)')

by
Code:
pattern = re.compile(r'inet.\D+(\d+\.\d+\.\d+\.\d+)')

Regard.
# 5  
Old 03-01-2014
Actually I ended up getting it with this:

Code:
#!/usr/bin/python

import re
import subprocess
from subprocess import Popen, PIPE

pattern = re.compile(r'inet.\S+(\S+\d+\.\d+\.\d+\.\d+)')

p1 = Popen(["/sbin/ifconfig"], stdout=subprocess.PIPE)

output = p1.communicate()[0]
result = re.findall(pattern, output)

print result[1]

Why it works I don't know. If anyone wants to shed some light on that I'm all ears.
# 6  
Old 03-01-2014
Your last solution work because the class '+' catch the most wide possible and so by example:
addr:10.0.0.139
first \S+ for addr:
second \S+ for 1 (here, \S work also)
\d+\.\d+\.\d+\.\d+ for 0.0.0.139

But your solution do not work with if first number is one digit as by exemple:
addr:1.0.0.139

Regards.
This User Gave Thanks to disedorgue For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Programming

Create a C source and compile inside Python 1.4.0 to 3.7.0 in Python for ALL? platforms...

Hi all... As you know I like making code backwards compatible for as many platforms as possible. This Python script was in fact dedicated for the AMIGA A1200 using Pythons 1.4.0, 1.5.2, 1.6.0, 2.0.1, and 2.4.6 as that is all we have for varying levels of upgrades from a HDD and 4MB FastRam... (1 Reply)
Discussion started by: wisecracker
1 Replies

2. Shell Programming and Scripting

Python with Regex and Excel

Hello I have a big excel file for Ticket Data Analysis. The idea is to make meaningful insight from Resolution Field. Now as people write whatever they feel like while resolving the ticket it makes quite a task. 1. They may or may not tag it with something like below within the resolution... (1 Reply)
Discussion started by: radioactive9
1 Replies

3. Shell Programming and Scripting

Sendmail K command regex: adding exclusion/negative lookahead to regex -a@MATCH

I'm trying to get some exclusions into our sendmail regular expression for the K command. The following configuration & regex works: LOCAL_CONFIG # Kcheckaddress regex -a@MATCH +<@+?\.++?\.(us|info|to|br|bid|cn|ru) LOCAL_RULESETS SLocal_check_mail # check address against various regex... (0 Replies)
Discussion started by: RobbieTheK
0 Replies

4. Programming

Python Regex List Creation

Here is a snippet of my code: blahblahblah... blah for link in goodies.soup.find_all('a'): blah.append(link.get('href')) blah=list(set(blah)) which gives my list of urls. So now I use a regex to search for the relevant urls which I want in a list: for r... (0 Replies)
Discussion started by: metallica1973
0 Replies

5. Shell Programming and Scripting

How to use regex on particular column (Removing comma from particular column)?

Hi, I have pipe separated file which contains some data having comma(,) in it. I want to remove the comma(,) only from particular column without changing data in other columns. Below is the sample data file, I want to remove the comma(,) only from 5th column. $ cat file1 ABC | DEF, HIJ|... (6 Replies)
Discussion started by: Prathmesh
6 Replies

6. Programming

Python Reading Individual files and Regex through them

As a newbie to Python, I am trying to write a script in which is will add all the log files (*.log) from within a directory to a list, open the files and search for an ip using a regex and single it out (appending the ip's to the list). So far, I have: import re, os def list_files() content = ... (4 Replies)
Discussion started by: metallica1973
4 Replies

7. Shell Programming and Scripting

Python Newbie Question Regex

I starting teaching myself python and am stuck on trying to understand why I am not getting the output that I want. Long story short, I am using PDB for debugging and here my function in which I am having my issue: import re ... ... ... def find_all_flvs(url): soup =... (1 Reply)
Discussion started by: metallica1973
1 Replies

8. Shell Programming and Scripting

Converting perl regex to sed regex

I am having trouble parsing rpm filenames in a shell script.. I found a snippet of perl code that will perform the task but I really don't have time to rewrite the entire script in perl. I cannot for the life of me convert this code into something sed-friendly: if ($rpm =~ /(*)-(*)-(*)\.(.*)/)... (1 Reply)
Discussion started by: suntzu
1 Replies

9. Shell Programming and Scripting

Python Regex

I have the below string and regex. However I cant understand why it works the way it does. IP has been changed for safety ;) String = NowSMS Error Report. Error initializing SMSC Interface 'SMPP - 10.15.8.10:17600'. Interface is not available. Regex = (.+\.)\s(.+) I get two... (1 Reply)
Discussion started by: barney34
1 Replies
Login or Register to Ask a Question