Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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 排除正则表达式中特殊字符#和#之后所有字符的匹配_Regex - Fatal编程技术网

Regex 排除正则表达式中特殊字符#和#之后所有字符的匹配

Regex 排除正则表达式中特殊字符#和#之后所有字符的匹配,regex,Regex,我正在试图找出如何排除特殊字符#+特殊字符#后面的最后一个字符 下面是我的正则表达式: (http|https):\/\/[www.]*website.com\/menu\/sub_menu\/sub_sub_menu\/.* 此正则表达式可以匹配这些字符串,其中字符串的最后部分可以随时更改: https://website.com/menu/sub_menu/sub_sub_menu/4e132072-90b2-4366-bcec-72575e412174 https://www.websi

我正在试图找出如何排除特殊字符#+特殊字符#后面的最后一个字符

下面是我的正则表达式:

(http|https):\/\/[www.]*website.com\/menu\/sub_menu\/sub_sub_menu\/.*
此正则表达式可以匹配这些字符串,其中字符串的最后部分可以随时更改:

https://website.com/menu/sub_menu/sub_sub_menu/4e132072-90b2-4366-bcec-72575e412174
https://www.website.com/menu/sub_menu/sub_sub_menu/4e132072-943254b2-4453466-ywebf3
我想从匹配中排除的是所有在末尾包含特殊字符的字符串,如#,后跟任何可能的字符或特定字符串

如以下示例所示:

https://website.com/menu/sub_menu/sub_sub_menu/4e132072-90b2-4366-bcec-72575e412174#page1
https://website.com/menu/sub_menu/sub_sub_menu/4e132072-90b2-4366-bcec-72575e412174#page2
https://website.com/menu/sub_menu/sub_sub_menu/4e132072-90b2-4366-bcec-72575e412174#any_string
我知道,对于排除某些字符,我可以使用
^
,但我不确定如何正确使用它。

尝试以下方法:

^((?:http|https):\/\/(?:www\.)?website.com\/menu\/sub_menu\/sub_sub_menu\/)([^#]*)(.*)$
您将返回3个捕获组:

组1将包含静态URL部分

第2组将包含动态零件

第3组将包含#,然后是其他组


你可以简单地用你最喜欢的编程语言连接第1组和第2组,以获得完整的URL,而不使用#-部分。

尝试
^https?:\/\/(?:www.)?website.com\/menu\/sub\u menu\/sub\u sub\u menu\/[^ sub\35;]*$
我已经尝试过你的解决方案,但它在regex测试仪中似乎不起作用:现在再试一次,我接管的原始www部分有一个bug,我刚刚修复了。你也可以试试。但它似乎与以下任何字符串都不匹配。我只是尝试了一下,它是有效的-但是你在测试网站上的示例文本需要只有一个URL,而不是一个文本和一堆URL,因为正则表达式是基于行的,否则锚定会失败。见: