Как извлечь слово «брань» из следующих функций:Регулярные выражения
type=weaksubj len=1 word1=wrestle pos1=verb stemmed1=y priorpolarity=negative
с помощью регулярного выражения?
Благодаря
Как извлечь слово «брань» из следующих функций:Регулярные выражения
type=weaksubj len=1 word1=wrestle pos1=verb stemmed1=y priorpolarity=negative
с помощью регулярного выражения?
Благодаря
вопрос не очень понятно, но я думаю, это то, что вы ищете:
word1=(\w+)
Ваш матч будет в 1-й группе. Вот некоторые примеры кода Python:
import re
yourstring = 'type=weaksubj len=1 word1=wrestle pos1=verb stemmed1=y priorpolarity=negative'
m = re.search(r'word1=(\w+)', yourstring)
print m.group(1)
Как видно на codepad. Более обобщенное решение:
import re
def get_attr(str, attr):
m = re.search(attr + r'=(\w+)', str)
return None if not m else m.group(1)
str = 'type=weaksubj len=1 word1=wrestle pos1=verb stemmed1=y priorpolarity=negative'
print get_attr(str, 'word1') # wrestle
print get_attr(str, 'type') # weaksubj
print get_attr(str, 'foo') # None
Также доступны на codepad
спасибо, что сработал :) – 2010-09-29 16:45:31
Отличный ответ. +1 – Ruel
Вы регулярное выражение будет что-то вроде этого
/.*word1=(\w+)/
Это также не работает – NullUserException
Если вы отредактируете свой ответ, было бы неплохо прокомментировать его. Некоторое время я был смущен, почему это не сработало. Хотя исходный '. *' По-прежнему бессмыслен. – teukkam
Использование: /word1=(\w+)/
Да, спасибо об этом. Ред. Нежелательное сопоставление вызывало регулярное выражение только для одного символа. : P – Ruel
Учитывая следующее регулярное выражение ...
/word1=(\w+)/
... $ 1 или любой другой ваш первый матч на вашем языке будет бороться.
в python, на что он должен быть похож? спасибо – 2010-09-29 16:25:18
Я верю, что это 'result = re.match (pattern, string)' – Ruel
@James см. мой ответ – NullUserException
Предполагая, что она всегда разделены пробелами
word1=([^ ]+)
Тогда вы можете получить значение на первом матче группы.
Может быть повторно ненужно, когда str.split выглядит, как это будет достаточно:
>>> s = "type=weaksubj len=1 word1=wrestle pos1=verb stemmed1=y priorpolarity=negative"
>>> dd = dict(ss.split('=',1) for ss in s.split())
>>> dd['word1']
'wrestle'
Зависит. Вы ищете первое слово после слова «word1 =»? Могут ли они иметь символы верхнего и нижнего регистра? Другие специальные символы? Я нахожу, что как только вы думаете об этих вещах, регулярное выражение почти пишет себя. – Spacedman