Python:正则表达式匹配与期望相反的内容



我希望我的正则表达式找到一个网址,以便能够将其转换为html链接。正则表达式将用于如下所示的链接: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>"

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

那是因为您使用re.split,它旨在将文本拆分为模式。相反,请使用're.findall:

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

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

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

最新更新