Python捕获子字符串

2024-10-03 11:12:52 发布

您现在位置:Python中文网/ 问答频道 /正文

请原谅我的无知。我知道这是一个非常琐碎的问题,但是我对regex有很多问题

我有这样一根线:

Secret seed: SAI4OILKV6QNC24OMIVB4WWEBL7KQRV6L4CXOO5MSY6ONRXYPU5BYW6B
Public: GDOTL2NTFQ4XC3NDQLD33HNFS7FQBZ5CWVDIEQJNAKX2GRX5VH5CVVZA

我想要捕获密钥和公钥,所以在本例中是SAI4OILKV6QNC24OMIVB4WWEBL7KQRV6L4CXOO5MSY6ONRXYPU5BYW6BGDOTL2NTFQ4XC3NDQLD33HNFS7FQBZ5CWVDIEQJNAKX2GRX5VH5CVVZA。正则表达式应该使用什么来捕获这个


Tags: secret密钥publicregexseed公钥本例sai4oilkv6qnc24omivb4wwebl7kqrv6l4cxoo5msy6onrxypu5byw6b
2条回答

种子似乎有一个56个字符的固定长度,由大写字母和数字组成,因此我们可以构造一个regex来匹配这种类型的模式,比如:

text = """
Secret seed: SAI4OILKV6QNC24OMIVB4WWEBL7KQRV6L4CXOO5MSY6ONRXYPU5BYW6B
Public: GDOTL2NTFQ4XC3NDQLD33HNFS7FQBZ5CWVDIEQJNAKX2GRX5VH5CVVZA
"""
seeds = re.findall(r"\b[\dA-Z]{56}\b", text)
print(seeds)
# ['SAI4OILKV6QNC24OMIVB4WWEBL7KQRV6L4CXOO5MSY6ONRXYPU5BYW6B', 'GDOTL2NTFQ4XC3NDQLD33HNFS7FQBZ5CWVDIEQJNAKX2GRX5VH5CVVZA']

Python演示
https://www.jdoodle.com/embed/v0/Q64

正则表达式演示
https://regex101.com/r/7MKWEE/2


正则表达式解释:enter image description here

你可以试试这个

它将匹配以“:”开头的单词边界之间的任何字符串

:\s*?\b(.*)\b

Explanation

  • :-匹配字符:
  • `\s?-匹配任何空格(如果有)
  • \b-单词边界
  • (.*)-匹配除换行符以外的任何零次或多次的内容

Demo

相关问题 更多 >