开发者

Create a Reg Exp to search for __word__?

In a program I'm making in python and I want all wor开发者_如何学JAVAds formatted like __word__ to stand out. How could I search for words like these using a regex?


Perhaps something like

\b__(\S+)__\b

>>> import re
>>> re.findall(r"\b__(\S+)__\b","Here __is__ a __test__ sentence")
['is', 'test']    
>>> re.findall(r"\b__(\S+)__\b","__Here__ is a test __sentence__")
['Here', 'sentence']
>>> re.findall(r"\b__(\S+)__\b","__Here's__ a test __sentence__")
["Here's", 'sentence']

or you can put tags around the word like this

>>> print re.sub(r"\b(__)(\S+)(__)\b",r"<b>\2<\\b>","__Here__ is a test __sentence__")
<b>Here<\b> is a test <b>sentence<\b>

If you need more fine grained control over the legal word characters it's best to be explicit

\b__([a-zA-Z0-9_':])__\b  ### count "'" and ":" as part of words

>>> re.findall(r"\b__([a-zA-Z0-9_']+)__\b","__Here's__ a test __sentence:__")
["Here's"]
>>> re.findall(r"\b__([a-zA-Z0-9_':]+)__\b","__Here's__ a test __sentence:__")
["Here's", 'sentence:']


Take a squizz here: http://docs.python.org/library/re.html

That should show you syntax and examples from which you can build a check for word(s) pre- and post-pended with 2 underscores.


The simplest regex for this would be

__.+__


If you want access to the word itself from your code, you should use

__(.+)__


This will give you a list with all such words

>>> import re
>>> m = re.findall("(__\w+__)", "What __word__ you search __for__")
>>> print m
['__word__', '__for__']


\b(__\w+__)\b

\b word boundary
\w+ one or more word characters - [a-zA-Z0-9_]


simple string functions. no regex

>>> mystring="blah __word__ blah __word2__"
>>> for item in mystring.split():
...     if item.startswith("__") and item.endswith("__"):
...        print item
...
__word__
__word2__
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜