![](/img/trans.png)
[英]How do you find the index of specific characters on python with multiple instances?
[英]How do you find all instances of a substring, followed by a certain number of dynamic characters?
我正在嘗試查找特定子字符串的所有實例(以 a.b2 為例),並在 ZE83AED3DDF4667DEC0DAAAACB2BB3BE0BZ 匹配后返回 4 個字符。 以下 4 個字符始終是動態的,可以是任何字母/數字/符號。
我試過搜索,但似乎提出的類似問題正在請求某些字符的幫助,這些字符可以輕松拆分 substring,但由於我正在尋找的字符是動態的,我不確定如何編寫正則表達式。
使用正則表達式時,可以使用“。” 動態匹配任何字符。 使用{number}
指定要匹配多少個字符,並使用(.{number})
中的括號指定應捕獲匹配以供以后使用。
>>> import re
>>> s = "a!b2foobar a!b2bazqux a!b2spam and eggs"
>>> print(re.findall("a!b2(.{4})", s))
['foob', 'bazq', 'spam']
如果您只是在尋找如何使用Regex獲取以下 4 個字符,那么您可能希望使用大括號指示符來匹配數量:'{}'。
他們 go 在這里的帖子中有更詳細的信息,但基本上你會做[aZ][0-9]{X,Y}
或(.{X,Y})
,其中 X 到 Y 是你的字符數尋找(在您的情況下,您只需要{4}
)。
解決這個問題的一個更Pythonic的方法是使用字符串切片,然而索引 function。
例如。 給定一個 input_string,當您使用index在索引 i 處找到 substring 時,您可以使用input_string[i+len(sub_str):i+len(sub_str)+4]
來獲取這些特殊字符。
舉個例子,
input_string = 'abcdefg'
sub_str = 'abcd'
found_index = input_string.index(sub_str)
start_index = found_index + len(sub_str)
symbol = input_string[start_index: start_index + 4]
輸出(顯示它也適用於 <4): efg
索引還允許您為搜索提供開始和結束索引,因此如果您想為每個子字符串查找它,也可以在循環中使用它,搜索索引的開始是上一個找到的索引 + 1。
import re
print (re.search(r'a!b2(.{4})')).group(1))
.{4}
匹配除special characters
。 group(0)
是搜索字符串的完全匹配。 您可以在此處閱讀有關組id
的信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.