簡體   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