Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何否定正则表达式中的特定单词_Php_Regex - Fatal编程技术网

Php 如何否定正则表达式中的特定单词

Php 如何否定正则表达式中的特定单词,php,regex,Php,Regex,我有一个字符串,格式为:关键字/page XXX(以page XXX结尾,可以为空) 关键字是任意字符。斜杠前的所有字符都是关键字。但是关键字可以有斜杠。关键字可以是第XXX页 XXX是任意数字 (第XXX页正在分页) 我想用正则表达式来获取关键字的值。怎么做 例如: 字符串是:I-Like-PHP/page-123/page-456/page-789 =>关键字的值为I-Like-PHP/page-123/page-456 字符串是:I-Like-PHP =>关键字值I-Like-PHP 字符

我有一个字符串,格式为:
关键字/page XXX
(以page XXX结尾,可以为空)

关键字是任意字符。斜杠前的所有字符都是关键字。但是关键字可以有斜杠。关键字可以是第XXX页

XXX是任意数字

第XXX页正在分页)

我想用正则表达式来获取关键字的值。怎么做

例如:

字符串是:I-Like-PHP/page-123/page-456/page-789 =>关键字的值为I-Like-PHP/page-123/page-456

字符串是:I-Like-PHP =>关键字值I-Like-PHP

字符串是:I-Like-PHP/ =>关键字值I-Like-PHP/ (有斜杠)

字符串是:I-Like-PHP/page-123 =>关键字值I-Like-PHP

字符串为:page-123 =>关键字为第123页

字符串为:page-123/ =>关键字为第123页/


如何仅使用正则表达式获取它?

您可以使用此正则表达式,它捕获所有内容,直到尾随的
/page XXX
,或者如果没有分页,则捕获行尾:

^(.*?)(?=\/page-\d+$|$)

您可以使用此正则表达式,它可以捕获所有内容,直到尾随的
/page XXX
,如果没有分页,则捕获行尾:

^(.*?)(?=\/page-\d+$|$)

如果您只需要关键字,请尝试此选项

$str = 'I-Like-PHP/page-123/page-456/page-789';
preg_match('([^/]+)',$str,$matches);
print_r($matches[0]);die;
这只会给你

I-Like-PHP

请尝试这个,如果你只需要关键字

$str = 'I-Like-PHP/page-123/page-456/page-789';
preg_match('([^/]+)',$str,$matches);
print_r($matches[0]);die;
这只会给你

I-Like-PHP


第一个斜杠前的第一个值始终是关键字?您是否尝试过php中的stripslashes函数。它可以删除斜杠$arr=explode(“/”,$string)$first=$arr[0];explode返回一个数组,第一部分将保存在数组中。应用多个正则表达式有什么问题?它可以更有效,更容易阅读,稍后。你是什么意思?关键字是任何字符。斜杠前的所有字符都是关键字。但是关键字可以有斜杠。关键字可以是第XXX页,它要求只使用正则表达式,而不是在第一个斜杠始终是关键字之前使用PHP解析stringfirst值?您尝试过PHP中的stripslashes函数吗。它可以删除斜杠$arr=explode(“/”,$string)$first=$arr[0];explode返回一个数组,第一部分将保存在数组中。应用多个正则表达式有什么问题?它可以更有效,更容易阅读,稍后。你是什么意思?关键字是任何字符。斜杠前的所有字符都是关键字。但是关键字可以有斜杠。关键字可以是页面XXX,它只需要使用正则表达式,而不需要使用PHP来解析stringHi,关键字是任何字符。斜杠前的所有字符都是关键字。但是关键字可以有斜杠。如果字符串是“page-123”@GracePeterson,则关键字不能是page XXX您的正则表达式仍然是数学。您在问题中没有明确说明这一点。你能给它添加这样的结尾吗。@GracePeterson在你的问题中,你说“我有一个格式为:关键字/第XXX页”的字符串,那么它怎么可能只是“第123页”?@GracePeterson你似乎改变了问题,使关键字可以是
page XXX
,在这种情况下,我认为这个答案有效。嗨,关键字是任意字符。斜杠前的所有字符都是关键字。但是关键字可以有斜杠。如果字符串是“page-123”@GracePeterson,则关键字不能是page XXX您的正则表达式仍然是数学。您在问题中没有明确说明这一点。你能给它加上这样的结尾吗?@GracePeterson在你的问题中,你说“我有一个格式为:关键字/page XXX的字符串”,那么它怎么可能只是“page-123”呢?@GracePeterson您似乎已经更改了问题,以便关键字可以是
第XXX页
,在这种情况下,我认为这个答案有效。它只需要正则表达式:)这不是正则表达式?您使用PHP替换第XXX页,然后获取关键字。但是我需要使用正则表达式来计算关键字。请注意,关键字可以是第XXXIt页,只需要正则表达式:)这不是正则表达式?您正在使用PHP替换第XXX页,然后获取关键字。但是我需要使用正则表达式来计算关键字。请注意,关键字可以是第XXX页