这个正则不用断言怎么写?

字符串:
[url=/space/4]@张三[/url] [url=/space/5]@李 四[/url] @张三 @张三 [url=/space/6]@王五[/url] [url=/space/7]@赵六[/url] [url=/space/8]@wolegequ[/url]@sweet @haha

要求,只匹配非[url]标签之外的@用户
即:张三, sweet,haha
不能用断言

阅读 2.1k
4 个回答

@([^@\[\]]+)(?![^\[\]]*\[\/url\])

(?<!\[url=/space/\d\])@(\S+)
image.png

你可以使用正则表达式的“负向后视断言”,你试试这个:(?<!\[/url\])@\w+

import re

text = "[url=/space/4]@张三[/url] [url=/space/5]@李 四[/url] @张三 @张三 [url=/space/6]@王五[/url] [url=/space/7]@赵六[/url] [url=/space/8]@wolegequ[/url]@sweet @haha"
pattern = r'(?<!\[/url\])@\w+'

matches = re.findall(pattern, text)

print(matches)  # 输出: ['@张三', '@张三', '@sweet', '@haha']
/(?<!\[url=.*?)@(\S+)(?!\[\/url\])/g
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏