473,326 Members | 2,655 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,326 software developers and data experts.

Reg Ex help

don
I have a string from a clearcase cleartool ls command.

/main/parallel_branch_1/release_branch_1.0/dbg_for_python/CHECKEDOUT
from /main/parallel_branch_1/release_branch_1.0/4

I want to write a regex that gives me the branch the file was
checkedout on ,in this case - 'dbg_for_python'

Also if there is a better way than using regex, please let me know.

Thanks in advance,
Don

May 11 '06 #1
11 1208
don wrote:
I have a string from a clearcase cleartool ls command.

/main/parallel_branch_1/release_branch_1.0/dbg_for_python/CHECKEDOUT
from /main/parallel_branch_1/release_branch_1.0/4

I want to write a regex that gives me the branch the file was
checkedout on ,in this case - 'dbg_for_python'

Also if there is a better way than using regex, please let me know.

Thanks in advance,
Don


Not regex, but does this do what you want?
s = "/main/parallel_branch_1/release_branch_1.0/dbg_for_python/CHECKEDOUT"
s = s + " from /main/parallel_branch_1/release_branch_1.0/4"
s.split('/')[4]

'dbg_for_python'

May 11 '06 #2
> /main/parallel_branch_1/release_branch_1.0/dbg_for_python/CHECKEDOUT
from /main/parallel_branch_1/release_branch_1.0/4

I want to write a regex that gives me the branch the file was
checkedout on ,in this case - 'dbg_for_python'

Also if there is a better way than using regex, please let me know.


Well, if you have it all in a single string:

s =
"/main/parallel_branch_1/release_branch_1.0/dbg_for_python/CHECKEDOUT
from /main/parallel_branch_1/release_branch_1.0/4"

you can do

branch = s.split("/")[4]

which returns the branch, assuming the path from root is the
same for each item in question.

If not, you can tinker with something like

r = re.compile(r'/([^/]*)/CHECKEDOUT')
m = r.match(s)

and which should make m.groups(1) the resulting item. You
don't give much detail regarding what is constant (the
number of subdirectories in the path? the CHECKEDOUT
portion?, etc) so it's kinda hard to figure out what is most
globally applicable.

-tkc

May 11 '06 #3
Hi don,

there may well be a better way then regex, although I find them usefull
and use them a lot.

The way they work would be dependant on knowing some things. For
example, if the dir you are after is always 4
deep in the structure you could try something like...

path =
'/main/parallel_branch_1/release_branch_1.0/dbg_for_python/CHECKEDOUT

from /main/parallel_branch_1/release_branch_1.0/4'

p = re.compile('/\S*/\S*/\S*/(\S*)/')
m = re.search(p, path)
..
if m:
print m.group(1)
This is a good reference...
http://www.amk.ca/python/howto/regex/

Hope that helps,
aaron.

don wrote:
I have a string from a clearcase cleartool ls command.

/main/parallel_branch_1/release_branch_1.0/dbg_for_python/CHECKEDOUT
from /main/parallel_branch_1/release_branch_1.0/4

I want to write a regex that gives me the branch the file was
checkedout on ,in this case - 'dbg_for_python'

Also if there is a better way than using regex, please let me know.

Thanks in advance,
Don


May 11 '06 #4
Hi don
I have a string from a clearcase cleartool ls command.
/main/parallel_branch_1/release_branch_1.0/dbg_for_python/CHECKEDOUT
from /main/parallel_branch_1/release_branch_1.0/4
I want to write a regex that gives me the branch the file was
checkedout on ,in this case - 'dbg_for_python'
Also if there is a better way than using regex, please let me know.


This is a good situation where Regex come into play,
because all other solutions won't catch on different
string structures easily.

If you know that you will need the string
before CHECKEDOUT, you can, for example use some
nice positive lookahead (mentioned today here)

pseudo: take all strings between / ... / and
return 'em if the next thing is CHECKEDOUT
(or something else):

/ ([^/]+) / (?=CHECKEDOUT)

The ([^/]+) means ^/ (not /) in a character
class, [^/]+ one or more than one times
and ([^/]+) capture it by (..)

The code:

import re

t = '/main/parallel_branch_1/release_branch_1.0/dbg_for_python/CHECKEDOUT from /main/p...'
r = r'/([^/]+)/(?=CHECKEDOUT)'

# print re.search(r, t).group(1)

would do the job, independent of the structure
of string - except the /CHECKEDOUT thing (which
has to be there)

If there are 'better ways' - that depends on
'better ways for whom?'. If you can handle
the Railgun, why bother with the Pistols ;-)

Regards

M.
May 11 '06 #5
don a écrit :
I have a string from a clearcase cleartool ls command.

/main/parallel_branch_1/release_branch_1.0/dbg_for_python/CHECKEDOUT
from /main/parallel_branch_1/release_branch_1.0/4

I want to write a regex that gives me the branch the file was
checkedout on ,in this case - 'dbg_for_python'

Also if there is a better way than using regex, please let me know.


s ="/main/parallel_branch_1/release_branch_1.0/dbg_for_python/CHECKEDOUT
from /main/parallel_branch_1/release_branch_1.0/4"
parts = s.replace(' ', '/').strip('/').split('/')
branch = parts[parts.index('CHECKEDOUT') - 1]
May 11 '06 #6
Bruno Desthuilliers wrote:
don a écrit :
Also if there is a better way than using regex, please let me know.


s ="/main/parallel_branch_1/release_branch_1.0/dbg_for_python/CHECKEDOUT
from /main/parallel_branch_1/release_branch_1.0/4"
parts = s.replace(' ', '/').strip('/').split('/')
branch = parts[parts.index('CHECKEDOUT') - 1]


I wouldn't call these better (or worse) than regexes, but a slight variation
on the above:

marker = s.index('/CHECKEDOUT')
branch = s [s.rindex('/', 0, marker) + 1 : marker]

This version will throw exceptions when the marker isn't found, which may or
may not be preferable under the circumstances.

May 11 '06 #7
If you have strings of all the CHECKEDOUT (is this from the lsco
command?), then the following might work for you:
s ="/main/parallel_branch_1/release_branch_1.0/dbg_for_python/CHECKEDOUT from /main/parallel_branch_1/release_branch_1.0/4"
s.split()[0].split('/')[-2] 'dbg_for_python'


- Paddy.

May 12 '06 #8
P.S.

This is how it works:
s ="/main/parallel_branch_1/release_branch_1.0/dbg_for_python/CHECKEDOUT from /main/parallel_branch_1/release_branch_1.0/4"
s '/main/parallel_branch_1/release_branch_1.0/dbg_for_python/CHECKEDOUT
from /main/parallel_branch_1/release_branch_1.0/4' s.split() ['/main/parallel_branch_1/release_branch_1.0/dbg_for_python/CHECKEDOUT',
'from', '/main/parallel_branch_1/release_branch_1.0/4'] s.split()[0] '/main/parallel_branch_1/release_branch_1.0/dbg_for_python/CHECKEDOUT' s.split()[0].split('/') ['', 'main', 'parallel_branch_1', 'release_branch_1.0',
'dbg_for_python', 'CHECKEDOUT'] s.split()[0].split('/')[-1] 'CHECKEDOUT' s.split()[0].split('/')[-2] 'dbg_for_python' s ="/main/parallel_branch_1/release_branch_1.0/dbg_for_python/CHECKEDOUT from /main/parallel_branch_1/release_branch_1.0/4"
s.split()[0].split('/')[-2] 'dbg_for_python'


- Paddy.

May 12 '06 #9
Edward Elliott wrote:
(snip)
don a écrit :
Also if there is a better way than using regex, please let me know.

(snip)
I wouldn't call these better (or worse) than regexes, but a slight variation
on the above:

marker = s.index('/CHECKEDOUT')
branch = s [s.rindex('/', 0, marker) + 1 : marker]


Much cleaner than mine. I shouldn't try to code when it's time to bed !-)
--
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in 'o****@xiludom.gro'.split('@')])"
May 12 '06 #10
bruno at modulix wrote:
parts = s.replace(' ', '/').strip('/').split('/')
branch = parts[parts.index('CHECKEDOUT') - 1]

Edward Elliott wrote:

marker = s.index('/CHECKEDOUT')
branch = s [s.rindex('/', 0, marker) + 1 : marker]


Much cleaner than mine. I shouldn't try to code when it's time to bed !-)


Not terribly readable though, hard to tell what the magic slice indexes
mean. Yours is easier to follow. I think I'd just use a regex though.

--
Edward Elliott
UC Berkeley School of Law (Boalt Hall)
complangpython at eddeye dot net
May 12 '06 #11
>>> se = SE.SE ('<EAT> "~/[A-Za-z0-9_]+/CHECKEDOUT~==" | /= CHECKEDOUT=')
se
('/main/parallel_branch_1/release_branch_1.0/dbg_for_python/CHECKEDOUT')
'dbg_for_python'

If I understand your problem, this might be a solution. It is a stream
editor I devised on the impression that it could handle in a simple manner a
number of relatively simple problems on this list for which no
commensurately simple methodologies seem to exist. I intend to propose it to
the group when I finish the doc. Meantime who do I propose it to?

Frederic
----- Original Message -----
From: "don" <ab*****@gmail.com>
Newsgroups: comp.lang.python
To: <py*********@python.org>
Sent: Thursday, May 11, 2006 7:39 PM
Subject: Reg Ex help

I have a string from a clearcase cleartool ls command.

/main/parallel_branch_1/release_branch_1.0/dbg_for_python/CHECKEDOUT
from /main/parallel_branch_1/release_branch_1.0/4

I want to write a regex that gives me the branch the file was
checkedout on ,in this case - 'dbg_for_python'

Also if there is a better way than using regex, please let me know.

Thanks in advance,
Don

--
http://mail.python.org/mailman/listinfo/python-list


May 12 '06 #12

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

21
by: Dave | last post by:
After following Microsofts admonition to reformat my system before doing a final compilation of my app I got many warnings/errors upon compiling an rtf file created in word. I used the Help...
9
by: Tom | last post by:
A question for gui application programmers. . . I 've got some GUI programs, written in Python/wxPython, and I've got a help button and a help menu item. Also, I've got a compiled file made with...
6
by: wukexin | last post by:
Help me, good men. I find mang books that introduce bit "mang header files",they talk too bit,in fact it is my too fool, I don't learn it, I have do a test program, but I have no correct doing...
3
by: Colin J. Williams | last post by:
Python advertises some basic service: C:\Python24>python Python 2.4.1 (#65, Mar 30 2005, 09:13:57) on win32 Type "help", "copyright", "credits" or "license" for more information. >>> With...
7
by: Corepaul | last post by:
Missing Help Files When I enter "recordset" as the keyword and search the Visual Basic Help index, I get many topics of interest in the resulting list. But there isn't any information available...
5
by: Steve | last post by:
I have written a help file (chm) for a DLL and referenced it using Help.ShowHelp My expectation is that a developer using my DLL would be able to access this help file during his development time...
8
by: Mark | last post by:
I have loaded Visual Studio .net on my home computer and my laptop, but my home computer has an abbreviated help screen not 2% of the help on my laptop. All the settings look the same on both...
10
by: JonathanOrlev | last post by:
Hello everybody, I wrote this comment in another message of mine, but decided to post it again as a standalone message. I think that Microsoft's Office 2003 help system is horrible, probably...
1
by: trunxnirvana007 | last post by:
'UPGRADE_WARNING: Array has a new behavior. Click for more: 'ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword="9B7D5ADD-D8FE-4819-A36C-6DEDAF088CC7"' 'UPGRADE_WARNING: Couldn't resolve...
0
by: hitencontractor | last post by:
I am working on .NET Version 2003 making an SDI application that calls MS Excel 2003. I added a menu item called "MyApp Help" in the end of the menu bar to show Help-> About. The application...
0
by: DolphinDB | last post by:
Tired of spending countless mintues downsampling your data? Look no further! In this article, you’ll learn how to efficiently downsample 6.48 billion high-frequency records to 61 million...
0
by: ryjfgjl | last post by:
ExcelToDatabase: batch import excel into database automatically...
0
isladogs
by: isladogs | last post by:
The next Access Europe meeting will be on Wednesday 6 Mar 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM). In this month's session, we are pleased to welcome back...
0
by: Vimpel783 | last post by:
Hello! Guys, I found this code on the Internet, but I need to modify it a little. It works well, the problem is this: Data is sent from only one cell, in this case B5, but it is necessary that data...
0
by: jfyes | last post by:
As a hardware engineer, after seeing that CEIWEI recently released a new tool for Modbus RTU Over TCP/UDP filtering and monitoring, I actively went to its official website to take a look. It turned...
0
by: ArrayDB | last post by:
The error message I've encountered is; ERROR:root:Error generating model response: exception: access violation writing 0x0000000000005140, which seems to be indicative of an access violation...
1
by: Defcon1945 | last post by:
I'm trying to learn Python using Pycharm but import shutil doesn't work
1
by: Shællîpôpï 09 | last post by:
If u are using a keypad phone, how do u turn on JavaScript, to access features like WhatsApp, Facebook, Instagram....
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 3 Apr 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome former...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.