说我有这个文字
我需要想一些在这里写的东西。 我是学院的校友。 蓝猫是蓝色的,红猫是红色的。
如果文本中不存在单词“student”(忽略大小写),我希望能够选择所有内容。因此,我需要超越第一线的东西。我最初有类似
的东西/(?:[^student]).*/
但它无法正常工作。我不确定我正在使用的正则表达式的“味道”,但它是在PHP和Drupal站点的后端。
谢谢!
答案 0 :(得分:0)
<强>问题强>
正如ctwheels评论所建议的那样,你写的(?:[^student]).*
的正则表达式没有按照你的想法做到。让我们打破你解释问题的尝试:
(?: )
&lt; ---此部分是非捕获组
[^student]
&lt; ---此部分匹配列表中不存在的单个字符
.*
&lt; ---匹配任何字符(行终止符除外)
即,您的括号表达式与[^tneduts]
或[^neduts]
甚至[^denstu]
相同。它不会找一个字!
<强>解决方案强>
您想要做的是使用否定前瞻。像这样^(?!.*student).*$
。让我们分解吧。
^
&lt; ---字符串开头的位置
(?!.*student)
&lt; ---查找学生后面的任何内容,如果找到则不匹配
.*
&lt; ---除非负前瞻有效,否则将所有内容都排除在外。
$
&lt; ---位于字符串末尾的位置