例如:
我的字符串是: 123456789 nn nn oo nn nn mlm nn203
。
我的目标是: nn
。
然后,我从头到尾匹配字符串,并返回第一个匹配结果及其位置。
在这个例子中,结果是 nn
开始于[-5]结束于[-3]。
我写了简单的函数来完成这个过程,但是如何使用正则表达式来完成这个工作呢?
原文由 Aurel Vlaicu 发布,翻译遵循 CC BY-SA 4.0 许可协议
例如:
我的字符串是: 123456789 nn nn oo nn nn mlm nn203
。
我的目标是: nn
。
然后,我从头到尾匹配字符串,并返回第一个匹配结果及其位置。
在这个例子中,结果是 nn
开始于[-5]结束于[-3]。
我写了简单的函数来完成这个过程,但是如何使用正则表达式来完成这个工作呢?
原文由 Aurel Vlaicu 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
对于字符串本身,只需执行 findall 并使用最后一个:
打印
nn5
您也可以使用
finditer
做同样的事情,这样可以更轻松地找到相关索引:打印
('nn5', 27, 30)
如果你有很多匹配并且你只想要最后一个,有时简单地反转字符串和模式是有意义的:
或者,将您的模式修改为只有最后一个匹配可能满足的模式:
或者,利用
.*
的贪心,它将始终返回多个匹配项中的最后一个:任何这些印刷品
nn5