Python компилирует все не слова, кроме точки [.] - PullRequest
1 голос
/ 12 августа 2010

Я пытаюсь разбить строку на всех шаблонах, кроме слов (точка)
Обычно я думаю, что это можно сделать как [\ W ^ [.]] В Java, но как это сделать в Python?

Ответы [ 5 ]

3 голосов
/ 12 августа 2010
>>> import re
>>> the_string="http://hello-world.com"
>>> re.findall(r'[\w.]+',the_string)
['http', 'hello', 'world.com']
1 голос
/ 12 августа 2010

Очень хорошая ссылка на модуль регулярных выражений Python доступна здесь . Следующие должны сделать трюк для вас.

import re
re.split(r'[\w.]+', text_string)

Или,

import re
re.findall('[^\w.]+', text_string)
0 голосов
/ 12 августа 2010

Ваш синтаксис Java отключен, для начала. Это то, что вы пытались:

[\W&&[^.]]

Это соответствует символу от пересечения наборов, описываемых «любым несловесным символом» и «любым символом, кроме .», но это излишне, когда вы можете просто использовать:

[^\w.]

... или "любой символ, который не является символом слова или .". То же самое в Python (и в большинстве других разновидностей, тоже), хотя вы, вероятно, хотите сопоставить один или несколько символов:

re.split(r'[^\w.]+', the_string)

Но, вероятно, проще использовать подход @ gnibbler для сопоставления частей, которые вы хотите оставить , а не тех, которые вы хотите отбросить:

re.findall(r'[\w.]+', the_string)
0 голосов
/ 12 августа 2010

Я предполагаю, что вы хотите разбить строку на все шаблоны, не состоящие из слов, кроме точки.

Редактировать: Python не поддерживает используемый вами синтаксис регулярных выражений в стиле Java. Я бы предложил сначала заменить все точки длинной строкой, затем разбить строку, а затем вернуть точки обратно.

import re
long_str = "ABCDEFGH"
str = str.replace('.', long_str)
result = re.split(r'\W', str)

Затем, когда вы используете result, замените все последовательности long_str точкой снова.

Это очень плохое решение, но оно работает.

0 голосов
/ 12 августа 2010

Python имеет удобную функцию для этого

>>> s = "ab.cd.ef.gh"
>>> s.split(".")
['ab', 'cd', 'ef', 'gh']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...