Создать Reg Exp для поиска __word__? - PullRequest
1 голос
/ 16 февраля 2010

В программе, которую я создаю на python, я хочу, чтобы все слова в формате __word__ выделялись. Как я могу искать такие слова, используя регулярные выражения?

Ответы [ 6 ]

4 голосов
/ 16 февраля 2010

Возможно что-то вроде

\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']

или вы можете поместить теги вокруг слова, как это

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

Если вам нужен более точный контроль над законными символами слова, лучше всего быть явным

\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:']
1 голос
/ 16 февраля 2010

Проведите сквош здесь: http://docs.python.org/library/re.html

Это должно показать вам синтаксис и примеры, из которых вы можете создать проверку для слова (слов) до и после с двумя подчеркиваниями.

0 голосов
/ 16 февраля 2010

простые строковые функции. без регулярных выражений

>>> mystring="blah __word__ blah __word2__"
>>> for item in mystring.split():
...     if item.startswith("__") and item.endswith("__"):
...        print item
...
__word__
__word2__
0 голосов
/ 16 февраля 2010
\b(__\w+__)\b

\b граница слова
\w+ один или несколько символов слова - [a-zA-Z0-9_]

0 голосов
/ 16 февраля 2010

Это даст вам список со всеми такими словами

>>> import re
>>> m = re.findall("(__\w+__)", "What __word__ you search __for__")
>>> print m
['__word__', '__for__']
0 голосов
/ 16 февраля 2010

Самое простое регулярное выражение для этого будет

__.+__


Если вы хотите получить доступ к самому слову из вашего кода, вы должны использовать

__(.+)__
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...