首页 > 解决方案 > 在Python中使用正则表达式获取字符之前/之后的单词

问题描述

这应该很容易使用捕获组,但我没有得到正确的单词。我一直在使用以下内容:

#Before
print(re.sub(r'\b([A-Za-z0-9]+)\b(?=\.?\s*(\&|\-|and))',r'\1','A. & B.',flags=re.IGNORECASE))
A. & B.

#After
print(re.sub(r'(\&|\-|and)\s*\b([A-Za-z0-9]+)\b',r'\2','A. & B.',flags=re.IGNORECASE))
A. B.

字符串可以是以下之一:

A. - B.
A.-B.
A. & B.
A.&B.
A. AND B.

这个想法是在我之前/之后得到这个词,ampersand| hyphen | and我分成两个正则表达式来得到这两个词。在这个例子中, before 会得到 justA和 after B

为什么捕获组没有打印A,并且B在前面的示例中?

提前致谢 :)

标签: pythonregex

解决方案


改为使用re.search()并在选项之一之前和之后对所需的单词进行分组&,-,and

text = re.search('(\w+)\.+\s*[\&*\-*AND*and*]*\s*(\w+)\.+', 'A. & B.')
print (text.groups())

推荐阅读