# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"\"PrivKey\": \"([a-zA-Z0-9_=\/-\\+]+)"
test_str = (" {\n"
" \"API\": {\n"
" \"HTTPHeaders\": {}\n"
" },\n"
" \"Addresses\": {\n"
" \"API\": \"/ip4/0.0.0.0/tcp/5001\",\n"
" \"Announce\": [],\n"
" \"Gateway\": \"/ip4/0.0.0.0/tcp/8080\",\n"
" \"NoAnnounce\": [],\n"
" \"Swarm\": [\n"
" \"/ip4/0.0.0.0/tcp/4001\",\n"
" \"/ip6/::/tcp/4001\"\n"
" ]\n"
" },\n"
" \"Bootstrap\": [\n"
" \"/dnsaddr/bootstrap.libp2p.io/ipfs/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN\",\n"
" \"/dnsaddr/bootstrap.libp2p.io/ipfs/QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa\",\n"
" \"/dnsaddr/bootstrap.libp2p.io/ipfs/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb\",\n"
" \"/dnsaddr/bootstrap.libp2p.io/ipfs/QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt\",\n"
" \"/ip4/104.131.131.82/tcp/4001/ipfs/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ\",\n"
" \"/ip4/104.236.179.241/tcp/4001/ipfs/QmSoLPppuBtQSGwKDZT2M73ULpjvfd3aZ6ha4oFGL1KrGM\",\n"
" \"/ip4/128.199.219.111/tcp/4001/ipfs/QmSoLSafTMBsPKadTEgaXctDQVcqN88CNLHXMkTNwMKPnu\",\n"
" \"/ip4/104.236.76.40/tcp/4001/ipfs/QmSoLV4Bbm51jM9C4gDYZQ9Cy3U6aXMJDAbzgu2fzaDs64\",\n"
" \"/ip4/178.62.158.247/tcp/4001/ipfs/QmSoLer265NRgSp2LA3dPaeykiS1J6DifTC88f5uVQKNAd\",\n"
" \"/ip6/2604:a880:1:20::203:d001/tcp/4001/ipfs/QmSoLPppuBtQSGwKDZT2M73ULpjvfd3aZ6ha4oFGL1KrGM\",\n"
" \"/ip6/2400:6180:0:d0::151:6001/tcp/4001/ipfs/QmSoLSafTMBsPKadTEgaXctDQVcqN88CNLHXMkTNwMKPnu\",\n"
" \"/ip6/2604:a880:800:10::4a:5001/tcp/4001/ipfs/QmSoLV4Bbm51jM9C4gDYZQ9Cy3U6aXMJDAbzgu2fzaDs64\",\n"
" \"/ip6/2a03:b0c0:0:1010::23:1001/tcp/4001/ipfs/QmSoLer265NRgSp2LA3dPaeykiS1J6DifTC88f5uVQKNAd\"\n"
" ],\n"
" \"Datastore\": {\n"
" \"BloomFilterSize\": 1048576,\n"
" \"GCPeriod\": \"1h\",\n"
" \"HashOnRead\": false,\n"
" \"Spec\": {\n"
" \"child\": {\n"
" \"path\": \"badgerds\",\n"
" \"syncWrites\": true,\n"
" \"truncate\": true,\n"
" \"type\": \"badgerds\"\n"
" },\n"
" \"prefix\": \"badger.datastore\",\n"
" \"type\": \"measure\"\n"
" },\n"
" \"StorageGCWatermark\": 90,\n"
" \"StorageMax\": \"100GB\"\n"
" },\n"
" \"Discovery\": {\n"
" \"MDNS\": {\n"
" \"Enabled\": true,\n"
" \"Interval\": 10\n"
" }\n"
" },\n"
" \"Experimental\": {\n"
" \"FilestoreEnabled\": false,\n"
" \"Libp2pStreamMounting\": false,\n"
" \"P2pHttpProxy\": false,\n"
" \"PreferTLS\": false,\n"
" \"QUIC\": false,\n"
" \"ShardingEnabled\": false,\n"
" \"UrlstoreEnabled\": false\n"
" },\n"
" \"Gateway\": {\n"
" \"APICommands\": [],\n"
" \"HTTPHeaders\": {\n"
" \"Access-Control-Allow-Headers\": [\n"
" \"X-Requested-With\",\n"
" \"Range\",\n"
" \"User-Agent\"\n"
" ],\n"
" \"Access-Control-Allow-Methods\": [\n"
" \"GET\"\n"
" ],\n"
" \"Access-Control-Allow-Origin\": [\n"
" \"*\"\n"
" ]\n"
" },\n"
" \"NoFetch\": false,\n"
" \"PathPrefixes\": [],\n"
" \"RootRedirect\": \"\",\n"
" \"Writable\": false\n"
" },\n"
" \"Identity\": {\n"
" \"PeerID\": \"Qme2joV44qiG38Q7YaEti6N1QMiM6XujXairxgJqJB9DeT\",\n"
" \"PrivKey\": \"CAASqQkwggSlAgEAAoIBAQDXaph7x+ZcxSXIFxHZ9JYHakDP/8mD33UPBY1KBJ7eLrhr8UA3Pc6gMB7sFUe7wVinij7rupXjprZ/eIMn5PpYaYeCjRhj40Vn718ahmotmP1eybyXXuUr/3WqeLnKa9swE7LmC/RhT9Db7DImcaaqssffG7pSpSr0Ap0AjTttxVqi21C3FF7VgV2yN+fSQkTrHLQ7hd9KghX6At3Ar4GrQkt4nXPwITtMy/G72iRdXPtGUMxDVArDenR3djaDF/7GxcaeAfLUeJyVw9bPXUh5z5ZYwMeHLOij4Ope3I1kgjfesVLNTQNsqh3XMDtCI/4efMoRDUMyFmdIl5SZA6SvAgMBAAECggEBAI+nDji9femvrxpYCBeI++PF/6K1uPSwN6fk0+vgWPFhxqp1H5W3Keu5K2XUaxnSPgS8NGmO7BX8PweSniQklq4O8cclwHYcQVSmVI2jxXrS42QqtBFdvwYwPY+JIpzSgED3Yf33Suj6CRYf1PG+KJ78yj0GiKJEcvh2Ja0QgekY0aaZcID2o2vcUPa3bdD88838i3wRx9L1Bhgr2whXdbl+Hbj0NyZ8QSZVjb9Echw2OZwjkflqHAn6W+C9cSAwdq7ESqymgS5S+JkuSxh2E0a1eEevIpEQ5j/Vy37sdFfd0vu31h9fNlq5t5SPK6DzaqEdexe3EP9CIWr8J+7sAUECgYEA5YPHro9VMZ+D08FBsv7pVQSOQepvII9RM5gM943pqWoo5+O4bUTVuAccp5fLknTO+cWnpIZzq8/YVLL+rUKZvCkgji1D+PiXBto2zt1/LKDFCQlvJ8KV/78A7rPwJ+ru/0D/8DkFVeCfteByW9w3EnbXoOKMqL/zXkRjHvapadsCgYEA8EZT7nouBflOrF25HsxxUs5rztDw29nPOG9x67QMAaxvPg04t/lkTeH5BkIg7mhXhQbW5v51HyZ8jes2h4guRo598VjiEkq6smMVmtxCCm85sySh1iAKkOKmFzGx8SQupDL5fi9PkFdqaQE+7QitozqBhad76b50YaWbfTUk2r0CgYEAtQoIxXG8QsNPqgXD/BxFE1HfoLD6bVV/ONJUUCU5ze+2Sov+2vo0FtBNUwlSg7jt1mmJviZsMXdmbhEvAJ4LRDewvVWJS2dTQg14tB5VhW9fXKx7aIJ97VjNtHxtEB+p2+B6whNIWSAw+rcLndgL/N2PYxGw4B9hKdeJ1E++/IcCgYEA5kmxlgb6Z3VcZy3pCNDP6Jq5j16JC15GEwQVfuBxBYWclS+c5g+ciF0GDW6CG55cC77TaFAIN1Pu2yLOf7YRDET0Bsa23utK50C6a1Oh5FhYSA/bINxS5CynHeHed43DOlM09zEnI+P0tDGiexLvQVwI2e39gLmu2Awe7DFsYk0CgYAWH7ghRPFQyQGFkSNSBZKPIy0hUqLJnEF4ACmQaqpU5xFnH5ZF4euBQiM/nn73AtSVQtjKpI02rOTR9FQ51ySw57fYTzejGjJOM1+UHlKLRSJIMnOhuzdRrO+2WGYmPVvr/k1htOoSEE8e+N6ZxNZERs3i/f8igfcD6v51k5SkQA==\"\n"
" },\n"
" \"Ipns\": {\n"
" \"RecordLifetime\": \"\",\n"
" \"RepublishPeriod\": \"\",\n"
" \"ResolveCacheSize\": 128\n"
" },\n"
" \"Mounts\": {\n"
" \"FuseAllowOther\": false,\n"
" \"IPFS\": \"/ipfs\",\n"
" \"IPNS\": \"/ipns\"\n"
" },\n"
" \"Pubsub\": {\n"
" \"DisableSigning\": false,\n"
" \"Router\": \"\",\n"
" \"StrictSignatureVerification\": false\n"
" },\n"
" \"Reprovider\": {\n"
" \"Interval\": \"12h\",\n"
" \"Strategy\": \"all\"\n"
" },\n"
" \"Routing\": {\n"
" \"Type\": \"dht\"\n"
" },\n"
" \"Swarm\": {\n"
" \"AddrFilters\": null,\n"
" \"ConnMgr\": {\n"
" \"GracePeriod\": \"20s\",\n"
" \"HighWater\": 2000,\n"
" \"LowWater\": 600,\n"
" \"Type\": \"basic\"\n"
" },\n"
" \"DisableBandwidthMetrics\": false,\n"
" \"DisableNatPortMap\": false,\n"
" \"DisableRelay\": false,\n"
" \"EnableAutoNATService\": false,\n"
" \"EnableAutoRelay\": false,\n"
" \"EnableRelayHop\": false\n"
" }\n"
" }")
matches = re.finditer(regex, test_str, re.MULTILINE)
for matchNum, match in enumerate(matches, start=1):
print ("Match {matchNum} was found at {start}-{end}: {match}".format(matchNum = matchNum, start = match.start(), end = match.end(), match = match.group()))
for groupNum in range(0, len(match.groups())):
groupNum = groupNum + 1
print ("Group {groupNum} found at {start}-{end}: {group}".format(groupNum = groupNum, start = match.start(groupNum), end = match.end(groupNum), group = match.group(groupNum)))
# Note: for Python 2.7 compatibility, use ur"" to prefix the regex and u"" to prefix the test string and substitution.
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Python, please visit: https://docs.python.org/3/library/re.html