例如,我有字符串:
"<p class='foo'>Hello World</p>"
结果必须是:
"<p class='foo'>Hello World</p>"
如果文本中有链接,则必须将其转换为HTML <a>
标记。
此外,如果有提及,如下:
"<p>Hello World @Mark</p>"
结果将是
"<p>Hello World <a href='/users/Mark'>@Mark</a></p>"
注意:这是在python中。正则表达式是一种可能的解决方案吗?
答案 0 :(得分:0)
关于使用@符号的提及,您可以正如您所提到的那样使用正则表达式,或者只是手动循环遍历存储@符号的起始位置的字符串的每个字符,以及当您遇到不是字符的字符时字母数字字符(例如空格或html标签/实体),然后你会在提到的末尾知道你,所以你存储结束。使用字符串子字符串函数来剪切其余字符。
其余代码都有HTML实体,只需在准备输出时还原或删除它们。
答案 1 :(得分:0)
您可以先使用cgi.escape
函数来转义字符串:
import cgi
a = '"<p>Hello World @Mark</p>"'
escaped = cgi.escape(a)
# result will be: '<p>Hello World @Mark</p>'
然后你可以使用regexp替换@Mark:
import re
result = re.sub('(@([-._a-zA-Z0-9]+))', r'<a href="/users/\2">\1</a>', a)
# result will be: '<p>Hello World <a href="/users/Mark">@Mark</a></p>'
如果您还需要转义<a href="...">...</a>
,请先运行正则表达式。