Jus*_*nas 3 php regex negative-lookbehind
我有这些字符串(分别检查每一行):
adminUpdate
adminDeleteEx
adminEditXe
adminExclude
listWebsite
listEx
Run Code Online (Sandbox Code Playgroud)
现在我想匹配任何以(admin
但不结束)开头但不结束的内容Ex
(不区分大小写)
因此在应用正则表达式之后我必须匹配:
adminUpdate
adminEditXe
adminExclude
Run Code Online (Sandbox Code Playgroud)
我当前的正则表达式是,/^admin[a-z]+(?!ex)$/gi
但它匹配任何开头admin
只是略有变化:
/^admin[a-z]+(?<!ex)$/gi
^
Run Code Online (Sandbox Code Playgroud)
把你的前瞻变成一个后视.
目前的形式很难解释.基本上,您需要到达字符串的末尾$
才能使正则表达式匹配,并且当它发生时,(?!ex)
它位于字符串的末尾,因此它无法提前看到任何内容.但是,由于我们位于字符串的末尾,我们可以使用look-behind (?<!ex)
来检查字符串是否以ex
.
由于环视是零宽度,我们可以交换位置(?<!ex)
和$
不改变含义(它确实会改变引擎搜索匹配字符串的方式):
/^admin[a-z]+$(?<!ex)/gi
Run Code Online (Sandbox Code Playgroud)
以这种方式编写它是违反直觉的,但更容易看出我的论点在哪里.
看看它的另一种方式是:由于这样的事实(?!ex)
和$
被零宽度断言,他们是在相同的位置检查,并且是在字符串的结束$
意味着你将看不到任何未来.
归档时间: |
|
查看次数: |
1081 次 |
最近记录: |