Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Python (http://www.velocityreviews.com/forums/f43-python.html)
-   -   regular expression : the dollar sign ($) work with re.match() or re.search() ? (http://www.velocityreviews.com/forums/t952690-regular-expression-the-dollar-sign-work-with-re-match-or-re-search-i-y.html)

iMath 09-26-2012 07:38 AM

regular expression : the dollar sign ($) work with re.match() or re.search() ?
 
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() ?

Jussi Piitulainen 09-26-2012 07:48 AM

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

> 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.

Chris Angelico 09-26-2012 07:57 AM

Re: regular expression : the dollar sign ($) work with re.match() orre.search()
 
On Wed, Sep 26, 2012 at 5:48 PM, Jussi Piitulainen
<jpiitula@ling.helsinki.fi> wrote:
> 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

Peter Otten 09-26-2012 08:33 AM

Re: regular expression : the dollar sign ($) work with re.match() orre.search() ?
 
iMath wrote:

> 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)
....
>>> demo()

pattern: mid$
'start mid end'
✓search 'start mid'
'mid end'
✓match ✓search 'mid'



Jussi Piitulainen 09-26-2012 04:29 PM

Re: regular expression : the dollar sign ($) work with re.match() or re.search()
 
Alister writes:
> On Wed, 26 Sep 2012 10:48:00 +0300, Jussi Piitulainen wrote:
>
> > iMath writes:
> >
> >> 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.

>
> 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

Ian Kelly 09-28-2012 06:32 PM

Re: regular expression : the dollar sign ($) work with re.match() or re.search() ?
 
On Fri, Sep 28, 2012 at 12:07 PM, Prasad, Ramit
<ramit.prasad@jpmorgan.com> wrote:
> 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:

>>> re.match('^two', 'one\ntwo', re.M)
>>> re.search('^two', 'one\ntwo', re.M)

<_sre.SRE_Match object at 0x0475BFA8>

iMath 01-07-2013 09:45 AM

Re: regular expression : the dollar sign ($) work with re.match() or re.search() ?
 
在 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 ?

Steven D'Aprano 01-07-2013 09:54 AM

Re: regular expression : the dollar sign ($) work with re.match()or re.search() $)C#?
 
On Mon, 07 Jan 2013 01:45:58 -0800, iMath wrote:

> 在 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 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.


--
Steven


All times are GMT. The time now is 12:55 PM.

Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.