php - 如果在特定内容中则跳过匹配
问题描述
我需要匹配文本中的给定单词,除非在特定句子中找到。
到目前为止,我创建了以下正则表达式:
(?!^)\G(?:['"][a-z0-9:\/._-]+example.com[a-z0-9:\/._-]+['"])(*SKIP)(*FAIL)|((?:\b|[_])elementor)(?:\b|[_])
因此,如果在“ http://example.com/content/elementor ”中找到了 elementor 这个词,则这不应该匹配。
这是一个正则表达式测试器https://regex101.com/r/NMOvfx/1/
解决方案
您可以使用
'~https?://[^\s'"]*(*SKIP)(*FAIL)|(?<![^\W_])(elementor)(?![^\W_])~'
查看正则表达式演示
细节
https?://
-https://
或http://
[^\s'"]*
- 0 个或多个除空格以外的字符,'
或"
(*SKIP)(*FAIL)
- 丢弃当前匹配并从失败的匹配端搜索下一个匹配|
- 或者(?<![^\W_])
- 前面没有单词或_
字符的位置(elementor)
- 第一组:单词elementor
(?![^\W_])
- 后面没有单词或_
字符的位置。
推荐阅读
- python - 使用 exec 和返回结果从 golang 内联 python3
- excel - 将单元格向左移动而不影响其自己的列
- raspberry-pi - 从 Raspberry pi 的源代码构建 Linphone
- python - Python 错误:“TypeError:'int' 对象不可调用
- c - 使用 gdb 了解堆栈帧和 rbp 和 rsp
- java - 我想删除 NavigationView 布局上的一个栏
- r - R 中的 trunc() 似乎不一致?
- powershell - 从参数集中选择一个参数集
- java - 双向实体关系使用Spring保存id null
- sql - Different conditions in same query