我想匹配网址的片段部分,这意味着以'#'开头的子字符串。
不的网址应该包含片段和查询。所以,如果一个'?'在第一个'#'之前,子字符串"#..."不应该匹配。
带片段的网址示例:
http://exampleurl.com:8080/#this?whole#thing?is#a?fragment
http://exampleurl.com:8080#this?whole#thing?is#a?fragment
http://exampleurl.com#this?whole#thing?is#a?fragment
没有片段的网址示例:
http://exampleurl.com:8080/?#this?whole#thing?is#NOT?a#fragment
http://exampleurl.com:8080/?this?whole#thing?is#NOT?a#fragment
正则表达式应与第一个示例中的"#this?whole#thing?is#a?fragment"
匹配,但不应与第二个示例中的任何内容匹配。如前所述,如果有一个'?'在第一个#'之前,它将被视为查询而不是片段。
尝试:
"#+.+$"
上面的正则表达式在第一个示例中正确匹配,但它也匹配第二个示例中的子字符串"#thing?is#NOT?a#fragment"
,这是不可取的。我不知道如何放入适当的防护装置以防止它与具有“'”的子串相匹配。在它之前。
谢谢!