【发布时间】:2014-05-13 15:14:19
【问题描述】:
我正在尝试使用正则表达式提取子字符串的位置(索引)。我需要使用正则表达式,因为字符串不会完全相同。我想获取子字符串的位置(开始或结束位置),所以我可以获取该子字符串后面的 1,000 个字符。
例如,如果我有“虽然经常交易外币,但大多数人赚的钱很少”。我想找到“外币”的位置,这样我就可以得到所有的单词。
f5 是文本。
我试过了:
p = re.compile("((^\s*|\.\s*)foreign\s*(currency|currencies))?")
for m in p.finditer(f5):
print m.start(), m.group()
获取位置。这给了我(0,0),即使我已经检查以确保正则表达式能找到我在文本中寻找的内容。
我也试过了:
location = re.search(r"((^\s*|\.\s*)foreign\s*(currency|currencies))?", f5)
print location
输出是 <_sre.sre_match at>
如果我尝试
location.span()
我又得到 (0,0)。
基本上,我想将 <_sre.sre_match at> 转换为给出搜索词位置的整数。
我花了半天时间寻找解决方案。感谢您的帮助。
【问题讨论】:
-
你能给出一个
f5的short, copyable example 哪个不应该用吗? -
SRE_Match 是 Python 中的匹配对象,因此您根本不需要转换它。例如,您需要通过
group()从对象中提取匹配项。
标签: python regex string substring