答案 0 :(得分:21)
对于特定的lesson,正确的regex
是:
[^b]og
<强> 说明: 强>
/[^b]og/
[^b] match a single character not present in the list below
b the literal character b (case sensitive)
og matches the characters og literally (case sensitive)
<强> 注意: 强>
<强> Negated Character Classes 强>
在打开方括号后键入插入符号会使字符无效 类即可。结果是字符类匹配任何字符 那不是在角色类中。与点,否定字符不同 类也匹配(不可见)换行符。如果你不这样做 想要一个否定的字符类来匹配换行符,你需要 包括类中的换行符。 [^ 0-9 \ r \ n] 匹配任何 不是数字或换行符的字符。
重要的是要记住否定的角色类仍然必须 匹配一个角色。 q [^ u] 并不意味着:“ a q后面没有u ”。它 表示:“一个q后跟一个不是你的字符”。它不是 匹配字符串伊拉克中的 q 。它确实匹配 q 和空间 之后 伊拉克是一个国家 。确实:空间成为其中的一部分 总体匹配,因为它是“字符不是你” 在上面的正则表达式中与否定字符类匹配。如果你 希望正则表达式匹配两个字符串中的 q ,只有 q , 需要使用
negative lookahead
。
答案 1 :(得分:4)
您基本上是正确的,但[^b]
仍会与o
中的g
和bog
匹配 - 这意味着它是成功的匹配,即使它不匹配整个字符串。 [^bog]
只会h
中的hog
,d
中的dog
,bog
中的任何内容 - 都不会匹配bog
1}}。
我认为如果你看一下^[^b]+$
,这会更有意义。这将匹配1+
非b
字符,锚定在字符串的开头(^
)和结尾($
)。将其与[^b]
或[^bog]
的初始表达式进行比较,您可以看到差异。我建议使用GUI RegEx测试器(以前链接的测试仪是我最喜欢的),这将真正有助于说明逻辑。
答案 2 :(得分:3)
^[^b]
有效。
^
外面[]
s表示&#34;字符串的开头&#34;
答案 3 :(得分:3)
[^b]
只匹配一个不是&#39; b&#39;。的字符
[^b]+
会指定RegEx组匹配一个或多个不是&#39; b&#39;的字符。
[^b]*
会指定RegEx组匹配零个或多个不是&#39; b&#39;。