Regex 正则表达式问题-can';无法匹配以空结尾的URL

Regex 正则表达式问题-can';无法匹配以空结尾的URL,regex,url,matching,Regex,Url,Matching,嘿,伙计们。我正在尝试创建一个正则表达式来匹配所有URL,如下所示: 并匹配包含“#”或“?”的URL直到这两个字符之前的字符。 这边 -> 到目前为止,我使用的正则表达式代码在仅选择某些文件类型或文件夹时效果良好,但有一种情况除外: 如果我的URL没有以文件扩展名(例如:.html、.php)或文件夹(例如:/)结尾,则模式将无法正确匹配,因为某些URL(例如:)将被排除 感谢您的帮助。谢谢大家 这是正则表达式: ^(?<protocol>http(s?)

嘿,伙计们。我正在尝试创建一个正则表达式来匹配所有URL,如下所示:

  • 并匹配包含“#”或“?”的URL直到这两个字符之前的字符。 这边 ->

    到目前为止,我使用的正则表达式代码在仅选择某些文件类型或文件夹时效果良好,但有一种情况除外:

    • 如果我的URL没有以文件扩展名(例如:.html、.php)或文件夹(例如:/)结尾,则模式将无法正确匹配,因为某些URL(例如:)将被排除
    感谢您的帮助。谢谢大家


    这是正则表达式:

    ^(?<protocol>http(s?))://(?<domain>[^/\r\n#?]+)(?<path>/[^?#]*(?:html|php|/))?
    
    ^(?http(s?):/(?[^/\r\n#?]+)(?/[^?#]*(?:html | php |/)?
    
    不确定您使用的是哪种语言,但如果您已经有URL列表,则可能不需要正则表达式

    在C#中,您可以执行以下操作:

    string a = "http://example.com/index.php?p=Hey";
    string b = a.Remove(a.IndexOfAny(new char[] {'?', '#'}, 0));
    

    这可能会满足您的要求:

    ^(?<protocol>http(s?))://(?<domain>[^/\s#?]+)(?<path>/[^\s#?]*)?(?<query>.*)?
    
    ^(?http(s?):/(?[^/\s#?]+)(?/[^\s#?]*)(?*)?
    

    查询将包含您可能希望忽略的其余内容。

    您是否只想从URL中删除从
    开始的所有内容?
    ?基本上是。。每个URL都可以,但一个没有结尾。这是因为有例如WordPress URL:-你有一个观点。。我正在使用PHP。我还想用一次旅行来检查URL的有效性,但是上面的代码没有这样做,所以我可能会尝试一下。。我想我忘了在上面提到,我还需要只扫描某些页面,比如(html | php |/)或文件夹(这整件事都是为了一个小爬虫)。这就是问题发生的原因。好吧,您无法确定以
    /
    结尾或没有任何特殊字符结尾的URL是否为文件夹<代码>http://example.com/about-me可以是文件夹,也可以是文件,您不知道。。。。大多数Web服务器处理文件夹路径时,实际上在URL中不带尾随
    /
    ,类似文件夹的内容实际上并不存在。Web服务器提供的一切都是文件,有些可能有其他文件的列表,但在实际查看该文件之前,您无法确定这一点。