我知道已经提出了几个类似的问题。但无法用正则表达式解决这个问题。
我有句话
Lorem Ipsum是http://stack.com的http://stack.com/wp-admin文字 印刷和排版行业。
我想缓存单词“stack.com”但不是 stack.com/wp-admin
我尝试了一些正则表达式,但它没有用。
^(?!stack.com$).*
答案 0 :(得分:1)
^(?!stack.com$).*
正则表达式匹配任何不以stack.com
开头的字符串(即使是空字符串)。
要匹配stack.com
但不匹配stack.com/wp-admin
,您需要一个负面的预测:
/stack\.com(?!\/wp-admin)/
^^^^^^^^^^^^^
或者更好,使用单词边界仅匹配整个单词:
/\bstack\.com\b(?!\/wp-admin)/
请参阅regex demo
<强>详情:
\b
- 领先的单词边界stack\.com
- 文字字符串stack.com
(必须转义一个点)\b
- 尾随字边界(?!\/wp-admin)
- 如果当前位置右侧有/wp-admin
,则会导致匹配失败的否定前瞻。