Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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
Regex 使用正则表达式匹配Blogger(blogspot)permalinks_Regex_Url_Blogger - Fatal编程技术网

Regex 使用正则表达式匹配Blogger(blogspot)permalinks

Regex 使用正则表达式匹配Blogger(blogspot)permalinks,regex,url,blogger,Regex,Url,Blogger,到目前为止,我已经(黑)了这个正则表达式,它匹配连字符之间的任何单词并将它们分隔开,省略了1个字符的文章。我之所以需要将这些单词分开,是因为Blogger成功地将url限制在39个字符,并且没有打断任何单词。到目前为止,这是有效的: ^(([a-zA-Z0-9]{2,39})-)+(?:([a-zA-Z0-9]{1})-(([a-zA-Z0-9]{2,39})-)+){2,39}$ 根据/wisking-you-a-very-merry-christmas-and-a-happy-new-yea

到目前为止,我已经(黑)了这个正则表达式,它匹配连字符之间的任何单词并将它们分隔开,省略了1个字符的文章。我之所以需要将这些单词分开,是因为Blogger成功地将url限制在39个字符,并且没有打断任何单词。到目前为止,这是有效的:

^(([a-zA-Z0-9]{2,39})-)+(?:([a-zA-Z0-9]{1})-(([a-zA-Z0-9]{2,39})-)+){2,39}$

根据
/wisking-you-a-very-merry-christmas-and-a-happy-new-year.html测试
匹配:
祝你圣诞快乐和-

替换字符串:
$1
(不工作!!)它导致:


如何使1个字母的文章不打印在结果正则表达式中?如何测试并删除结果中的最后一个
-

您不能用一个正则表达式来构建它

长度最多为39个字符且未以
-
结尾的部分没有问题

^\/?([\w-]{3,39})(?<!-).*
^\/?([\w-]{3,39})(?
看到了吗

(?是一个查找断言,用于确保字符串不会以连字符结尾

但不能同时删除长度为1的子字符串

就其本身而言,这也没有问题

(?<=[/-]|^)[^-]-|-[^-](?=[-./]|$)

(?我对您的模式感到困惑。尽管如此,我认为该模式无法匹配以斜杠开头的字符串-它匹配ASCII字母数字作为第一个字母,并且从不匹配斜杠。我还建议删除一些捕获组(我已经计算了7个)。如果您询问如何匹配一段不连续的文本,则无法。提取整个slug,然后用空字符串替换任何要排除的单词。谢谢您-使用该url,它完全匹配,并在“…和”处停止,但在其他url上,它恰好停止在39个字符处-如何在最后一个单词(由连字符定义)处停止?