Python:正则表达式与所需的相反

2024-03-28 10:35:14 发布

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

我希望我的正则表达式找到一个网址,能够把它变成一个html林克。那个regex将用于如下所示的链接:网址:www.site.extension和https://site.extension。正则表达式是\S*。?w{3}.\S+.\S+并且它在使用https://regexr.com/时确实给出了所需的结果。然而,当我使用python脚本时,得到的结果与期望的相反,因此所有不是链接的内容都会被视为是链接,但是没有找到链接。在

python代码是:

testbestand = """TESTBESTAND

Div1 kjaskdjfiudhgjnkcvdnbk djskj ij g ijg jkdfnbdiiji jj iikdafnbn ojedfkj giqw34
Akdjfkjasdf

Div2 aksjdfkj sadfkjg sdkjiew kvckjeri cdkj sdkeridk erkire

Div3 kajkdjfkjakdjgsdghijskdg

Div 4 www.link.com

Div5
Table Left  Table Right
Table Left 2    Table Right 2
Table Left 3    Table Right 3
"""

fileContent = testbestand
toAddToFile = ""

#find links
pattern = re.compile(r'\S*\.?w{3}\.\S+\.\S+')
matches = re.split(pattern, fileContent)\

for match in matches:
    match = match.strip()

    if len(match) > 0:
        #TODO change to 'edit' file, instead of adding to it
        test = """<a href=" """ + match + """>" """ + match + "</a>"
        print(test)

        toAddToFile += """<a href=" """ + match + """>" """ + match + "</a>"

提前感谢您的帮助!如果需要更多的信息或代码,我会立即提供。在


Tags: 代码httpsrightcom链接wwwmatchextension
2条回答

您应该使用re.sub而不是re.split

toAddToFile = re.sub(r'(\S*\.?w{3}\.\S+\.\S+)', r'<a href="\1">\1</a>', fileContent)

这是因为您使用了re.split,它被设计成在模式的处分割文本。相反,使用`关于芬德尔公司名称:

pattern = re.compile(r'\S*\.?w{3}\.\S+\.\S+')
matches = pattern.findall(fileContent)

相关问题 更多 >