匹配非 url 标签之外的 @ 用户
给定一个包含 url 标签和 @ 用户名的字符串,如何找出所有非 url 标签中的 @ 用户名,但不使用断言?
解决方案:
使用以下正则表达式:
@([^@[]]+)(?![^[]]*[/url])
分析:
- @ 匹配字符 ‘@’。
- ([^@[]] ) 捕获一段不包含 ‘@’、'[‘ 或 ‘]’ 的文本,这表示一个用户名。
- (?![^[]]*[/url]) 是一个负向先行断言,它断言前面不包含任何 url 标签结束标签 ‘[/url]’。这可确保只匹配非 url 标签中的用户名。