使用正则表达式避免在文本的开头和结尾处使用字符

时间:2015-08-24 09:12:58

标签: python regex

我想转换下一个例子:#39#401#102成为一个链接。这些都在一个大文本里面。因此,我尝试通过正则表达式检测它们。我做了以下模式:

pattern_issue = '#[0-9]*'

但是,由于它在逃脱后已经显示在网上,所以:

I'm your father

结果:

I'm your father

错误是因为我的预处理功能。我想修改我的正则表达式模式,以避免像:

pattern_issue = '[^&][#][0-9]*[^;]'

所以就这样“问题#37”变成了一个链接,但是“我和你父亲”不是,但没有成功!

希望你能帮忙!

提前致谢!

1 个答案:

答案 0 :(得分:3)

您可以使用以下正则表达式:

(?<!&)#[0-9]+(?!;)

否定后瞻(?<!&)确保&之前没有#,否定前瞻确保数字后面没有;。< / p>

请参阅demo

在我的初步评论中,我在末尾使用了与\b相同的模式来强​​制匹配结束字边界(只是为了确保匹配的最后一个数字后跟一个非单词字符) 。因此,如果您打算忽略(?<!&)#[0-9]+(?!;)\b - 类似实体,那么#100;应该会起作用。