regular expression : the dollar sign ($) work with re.match() or re.search() ?

I

iMath

I only know the dollar sign ($) will match a pattern from the
end of a string,but which method does it work with ,re.match() or re.search() ?
 
J

Jussi Piitulainen

iMath said:
I only know the dollar sign ($) will match a pattern from the end of
a string, but which method does it work with, re.match() or
re.search()

It works with both. With re.match, the pattern has to match at the
start of the string _and_ the $ has to match the end of the string (or
a line); re.search scans the string until it finds a suitable start.

What was the weird character that you used as a question mark? I
removed them because they confuse the newsreader I use.
 
C

Chris Angelico

What was the weird character that you used as a question mark? I
removed them because they confuse the newsreader I use.

It appears to be Unicode Character 'FULLWIDTH QUESTION MARK' (U+FF1F).
Normally I'd be inclined to simply use U+003F instead, but hey, it's a
question mark still.

ChrisA
 
P

Peter Otten

iMath said:
I only know the dollar sign ($) will match a pattern from the
end of a string,but which method does it work with ,re.match() or
re.search() ?

Why not try it out in the interactive interpreter? Here's the "deluxe
version":
def demo(pattern="mid$", texts=["start mid end", "start mid", "mid end",
"mid"], matchers=[re.match, re.search]):
.... print "pattern:", pattern
.... for text in texts:
.... for matcher in matchers:
.... name = matcher.__name__
.... print u"\N{CHECK MARK}" + name if matcher(pattern,
text) else (" "*(len(name)+1)),
.... print repr(text)
....pattern: mid$
'start mid end'
✓search 'start mid'
'mid end'
✓match ✓search 'mid'
 
J

Jussi Piitulainen

Alister said:
It shows fine in my news reader, perhaps you should consider changing to
one that works properly (btw I am using pan on a fedora 17 netbook)

I was just curious why anyone would use anything other than the ASCII
question mark as an ordinary question mark when writing in English in
a newsgroup.

The post had this:

0000520 61 72 63 68 28 29 20 20 ef bc 9f 0a
a r c h ( ) sp sp o < us nl

od is showing (ef bc 9f) as (o < us) but since they are not individual
characters anyway, never mind that. Google tells me (ef bc 9f) is
UTF-8 for U+FF1F FULLWIDTH QUESTION MARK, so now I basically have my
answer as to what it is, though still not as to why one would use it.

The ordinary question mark would look like this:

0000000 61 72 63 68 28 29 20 3f 0a
a r c h ( ) sp ? nl
 
I

Ian Kelly

I guess you can consider re.match's pattern to be
prefixed with '^'.

You can in this case, but they're not equivalent in multi-line mode:
<_sre.SRE_Match object at 0x0475BFA8>
 
I

iMath

在 2012å¹´9月26日星期三UTC+8下åˆ3æ—¶38分50秒,iMath写é“:
I only know the dollar sign ($) will match a pattern from the

end of a string,but which method does it work with ,re.match() or re.search() ?

I thought re.match('h.$', 'hbxihi') will match ‘hi’ ,but itdoes not .so why ?
 
S

Steven D'Aprano

在 2012å¹´9月26日星期三UTC+8下åˆ3æ—¶38分50秒,iMath写é“:

I thought re.match('h.$', 'hbxihi') will match ‘hi’ ,but it does not .so
why ?


re.match only matches at the *start* of the string, so "h.$" tries to
match:

* start of string
* literal h
* any character
* end of string


You want re.search, which will search the entire string and match "hi" at
the end of the string.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,996
Messages
2,570,238
Members
46,826
Latest member
robinsontor

Latest Threads

Top