返回

正则表达式教程:磁力链接(宽松匹配)

正则表达式

一、正则解释

/^magnet:\?xt=urn:btih:[0-9a-fA-F]{40,}.*$/
  • ^ :匹配字符串的开头。
  • magnet: :匹配字符串"magnet:"。
  • ? :匹配一个问号。
  • xt :匹配字符串"xt"。
  • = :匹配一个等号。
  • urn:btih: :匹配字符串"urn:btih:"。
  • [0-9a-fA-F]{40,} :匹配40个或更多十六进制数字(字母和数字)。
  • . *:匹配任何字符任意次。
  • $ :匹配字符串的结尾。

二、使用场景

该正则表达式用于匹配磁力链接。磁力链接通常包含一个 "magnet:" 前缀,后面跟一个 "xt=urn:btih:" 参数和一个 40 个或更多十六进制字符的哈希值。

三、代码示例

JavaScript

const regex = /^magnet:\?xt=urn:btih:[0-9a-fA-F]{40,}.*$/;
const magnetLink = "magnet:?xt=urn:btih:40A89A6F4FB1498A98087109D012A9A851FBE0FC";
const result = regex.test(magnetLink);

Java

import java.util.regex.Pattern;

public class MagnetLinkMatcher {

    public static void main(String[] args) {
        String regex = "^magnet:\\?xt=urn:btih:[0-9a-fA-F]{40,}.*
import java.util.regex.Pattern;

public class MagnetLinkMatcher {

    public static void main(String[] args) {
        String regex = "^magnet:\\?xt=urn:btih:[0-9a-fA-F]{40,}.*$";
        String magnetLink = "magnet:?xt=urn:btih:40A89A6F4FB1498A98087109D012A9A851FBE0FC";
        Pattern pattern = Pattern.compile(regex);
        boolean result = pattern.matcher(magnetLink).matches();
    }
}
quot;
; String magnetLink = "magnet:?xt=urn:btih:40A89A6F4FB1498A98087109D012A9A851FBE0FC"; Pattern pattern = Pattern.compile(regex); boolean result = pattern.matcher(magnetLink).matches(); } }

PHP

<?php
$regex = '/^magnet:\?xt=urn:btih:[0-9a-fA-F]{40,}.*$/';
$magnetLink = "magnet:?xt=urn:btih:40A89A6F4FB1498A98087109D012A9A851FBE0FC";
if (preg_match($regex, $magnetLink)) {
    echo "匹配成功";
}

Python

import re

regex = r"^magnet:\?xt=urn:btih:[0-9a-fA-F]{40,}.*
import re

regex = r"^magnet:\?xt=urn:btih:[0-9a-fA-F]{40,}.*$"
magnetLink = "magnet:?xt=urn:btih:40A89A6F4FB1498A98087109D012A9A851FBE0FC"
result = re.match(regex, magnetLink)
quot;
magnetLink = "magnet:?xt=urn:btih:40A89A6F4FB1498A98087109D012A9A851FBE0FC" result = re.match(regex, magnetLink)