常规正则匹配非标签内用户名
你有一个字符串,包含多个被 [url] 标签包围的用户名,以及一些未被标签包围的用户名。你的目标是只匹配那些未被标签包围的用户名。
为了解决这个问题,你可以使用以下正则表达式:
@([^@[]]+)(?![^[]]*[/url])
解释
- @:匹配一个 “@” 符号。
- ([^@[]] ):匹配一个或多个非 “@”、”[” 或 “]” 的字符,将匹配到的内容存储在捕获组 1 中。
- (?![^[]]*[/url]):这是一个负向前瞻,它确保匹配的文本后面没有 “[url]” 到 “[/url]” 之间的任何内容。
示例
对于给定的字符串:
[url=/space/4]@张三[/url] [url=/space/5]@李 四[/url] @张三 @张三 [url=/space/6]@王五[/url] [url=/space/7]@赵六[/url] [url=/space/8]@wolegequ[/url]@sweet @haha
正则表达式将匹配以下结果:
- 张三
- sweet
- haha