[英]negative lookaround regex
我有以下字符串
.proxy.com TRUE / FALSE 0 COOKIE%253BCartID%253B%252F%253Bwww.proxy.com 1914104745%253B
和以下正则表达式
[a-zA-Z0-9\%]{14,15}
我只想匹配1914104745%253B,但它正在接收COOKIE%253BID,我试图这样做是否定的
[a-zA-Z0-9\%]{14,15}[?!COOKIE]
但这不起作用
有人可以帮忙这个正则表达式吗?
为什么不只使用[a-zA-Z0-9%]{14,15}$
锚定到字符串的末尾
$str=".proxy.com TRUE / FALSE 0 COOKIE%253BCartID%253B%252F%253Bwww.proxy.com 1914104745%253B";
preg_match('/[a-zA-Z0-9%]{14,15}$/',$str,$match);
echo $match[0];
>>> 1914104745%253B
如果你想匹配字符串的一部分是严格的格式,你可以使用的东西,如\\d{10}%\\d{3}[AZ]$
,你可以删除$
如果比赛不会总是在字符串的结尾,在您的示例中,只有1914104745%253B
会被匹配。
注意: %
不需要转义。
前瞻使用圆括号,而不是方括号。 但是,我认为单靠向前看不会有所帮助:
(?!COOKIE)[a-zA-Z0-9\%]{14,15}
可以防止它与COOKIE%253BCart
匹配,但是它将仅与OOKIE%253BCartI
匹配。 使用结尾的$
将匹配项固定在行尾,可能是最简单的方法。
您是否只是在尝试获取行上非空格字符的最后一个字符串? 然后用这个
(\S+)$
您还可以使用preg_split
在preg_split
进行拆分,并获取它返回的数组的最后一个元素。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.