繁体   English   中英

找到字符串中子字符串的位置

[英]find position of a substring in a string

我有一个格式的python字符串

mystr = "hi.this(is?my*string+"

在这里,我需要获得被特殊字符或非字母字符包围的'is'的位置(即本例中的第二个'是')。 但是,使用

mystr.find('is')

如果'is'与'this'相关联,则返回该位置,这是不希望的。 如何找到字符串中非字母字符包围的子字符串的位置? 使用python 2.7

这里最好的选择是使用正则表达式。 Python具有用于处理正则表达式re模块

我们使用简单的搜索来找到"is"的位置:

>>> match = re.search(r"[^a-zA-Z](is)[^a-zA-Z]", mystr)

这会将第一个匹配作为匹配对象返回。 然后我们简单地使用MatchObject.start()来获取起始位置:

>>> match.start(1)
8

编辑:一个好点,我们使"is"一个组并匹配该组以确保我们获得正确的位置。

正如评论中所指出的,这做了一些假设。 一个是包围意味着"is"不能在字符串的开头或结尾,如果是这种情况,则需要不同的正则表达式,因为这只匹配包围的字符串。

另一个是,这将数字视为特殊字符 - 你说的是非字母的 ,我用它来表示包含的数字。 如果您不想计算数字,那么使用r"\\b(is)\\b"是正确的解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM