import re
regex = re.compile(r"\s+(-[0-9A-Za-z]+|--[A-Za-z0-9][\w-]+)", flags=re.MULTILINE)
test_str = ("ignores position args\n"
"ignores-this _and_this _2 but-not -a -xvzf -4 -6 -Targ\n"
"ignores-echo -----------\n"
"ignores-mistaken --a did-you-mean -a\n"
" --3-2-pulldown\n"
" --3gpp-scan\n"
" --64\n"
" --802_3-sap\n"
" --802_3-type\n"
" --90\n"
" --abi-call0\n"
" --action1\n"
" --action9\n"
" --appData\n"
" --assume-utf16be\n"
" --assume-utf16le\n"
" --authValue\n"
" --aws-sigv4\n"
" --background_compression\n"
" --btf_encode\n"
" --cipherText\n"
" --Complain\n"
" --contains_enumerator\n"
" --data_replicas\n"
" --disable-pcre2-8\n"
" --disable-pcre2grep-callout\n"
" --disable-pcre2grep-callout-fork\n"
" --disable-pcre2grep-jit\n"
" --dns-ipv4-addr\n"
" --dns-ipv6-addr\n"
" --do-0x20-encode\n"
" --do-x20-encode\n"
" --dualprime-mpeg2\n"
" --eccpoint-L\n"
" --enable-ebcdic-nl25\n"
" --enable-never-backslash-C\n"
" --enable-pcre2-16\n"
" --enable-pcre2-32\n"
" --enable-pcre2grep-libbz2\n"
" --enable-pcre2grep-libz\n"
" --enable-pcre2test-libedit\n"
" --enable-pcre2test-libreadline\n"
" --entityPath\n"
" --expect100-timeout\n"
" --exportedData\n"
" --filter-A\n"
" --filter-AAAA\n"
" --filterwin2k\n"
" --force-ipv4\n"
" --force-ipv6\n"
" --force-R5\n"
" --force-V4\n"
" --Foreground\n"
" --fwdownload-mode3\n"
" --fwdownload-mode3-max\n"
" --fwdownload-mode7\n"
" --gb18030\n"
" --GBR\n"
" --hostpubmd5\n"
" --hostpubsha256\n"
" --http0\n"
" --http1\n"
" --http2\n"
" --http2-prior-knowledge\n"
" --http3\n"
" --http3-only\n"
" --ignoreDefinites\n"
" --importData\n"
" --Include\n"
" --intra_dc_prec\n"
" --ip6\n"
" --ip6-destination\n"
" --ip6-destination-port\n"
" --ip6-dport\n"
" --ip6-dst\n"
" --ip6-icmp-type\n"
" --ip6-proto\n"
" --ip6-protocol\n"
" --ip6-source\n"
" --ip6-source-port\n"
" --ip6-sport\n"
" --ip6-src\n"
" --ip6-tclass\n"
" --ipv4\n"
" --ipv6\n"
" --Iraw\n"
" --Istdin\n"
" --Istdout\n"
" --jsonPolicy\n"
" --keep-utf16\n"
" --keyPath\n"
" --lang_exclude\n"
" --Lc\n"
" --Lee\n"
" --linearize-pass1\n"
" --Lmac2\n"
" --Ln\n"
" --logData\n"
" --log-ip6\n"
" --Lx\n"
" --mirror-above-4G\n"
" --mirror-below-4G\n"
" --netfilter6\n"
" --no-0x20-encode\n"
" --no3d\n"
" --no-altscan-mpeg2\n"
" --no-D\n"
" --no-dhcpv4-interface\n"
" --no-dummy-svcd-SOF\n"
" --nr_methods\n"
" --numBytes\n"
" --Numeric\n"
" --nvPath\n"
" --oauth2-bearer\n"
" --omit_journal_replay\n"
" --output-Z1\n"
" --output-Z2\n"
" --p12-charset\n"
" --pathList\n"
" --pathOfKeyToDuplicate\n"
" --pcrIndex\n"
" --pcrList\n"
" --pcrLog\n"
" --pcrValue\n"
" --plainText\n"
" --policyPath\n"
" --policyRef\n"
" --post301\n"
" --post302\n"
" --post303\n"
" --prefer-ata12\n"
" --print0\n"
" --PROG-option\n"
" --proxy1\n"
" --proxy-http2\n"
" --proxy-tls13-ciphers\n"
" --proxy-tlsv1\n"
" --publicKey\n"
" --publicKeyPath\n"
" --qualifyingData\n"
" --quiet-dhcp6\n"
" --quoteInfo\n"
" --readimpliesX\n"
" --reduction-2x2\n"
" --reduction-4x4\n"
" --replay_journal_only\n"
" --searchPath\n"
" --seek_bytes\n"
" --set-recommended-min_free_kbytes\n"
" --S-force\n"
" --size_bytes\n"
" --socks4\n"
" --socks4a\n"
" --socks5\n"
" --socks5-basic\n"
" --socks5-gssapi\n"
" --socks5-gssapi-nec\n"
" --socks5-gssapi-service\n"
" --socks5-hostname\n"
" --sslv2\n"
" --sslv3\n"
" --tls13-ciphers\n"
" --tlsv1\n"
" --tpm2\n"
" --tpm2bPrivate\n"
" --tpm2bPublic\n"
" --type_trans\n"
" --type_transition\n"
" --UCS-2\n"
" --Version\n"
" --warning-exit-0\n"
" --Wext\n"
" --with-pcre2grep-bufsize\n"
" --with-pcre2grep-max-bufsize\n"
" --with-PROG\n"
" --Wnp\n"
" --Wp\n"
" --x11\n"
" --x32\n"
" --x509certData")
matches = regex.finditer(test_str)
for match_num, match in enumerate(matches, start=1):
print(f"Match {match_num} was found at {match.start()}-{match.end()}: {match.group()}")
for group_num, group in enumerate(match.groups(), start=1):
print(f"Group {group_num} found at {match.start(group_num)}-{match.end(group_num)}: {group}")
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