C++ 我的c+有什么问题+;boost正则表达式函数? 包括 #包括 #包括 #包括 使用名称空间std; 使用名称空间boost; 字符串_getBasehtttp(字符串url) { 正则表达式exrp(“^(?:http://)?([^\\/]+)(.*)”; 匹配结果是什么; if(regex_搜索(url、what、exrp)) { 字符串基(what[1]。第一,what[1]。第二); 返回基地; } 返回“”; } int main(){ 不能
http://不匹配,但是它是可选的,所以这没有问题;“一个或多个非斜杠字符”匹配C++ 我的c+有什么问题+;boost正则表达式函数? 包括 #包括 #包括 #包括 使用名称空间std; 使用名称空间boost; 字符串_getBasehtttp(字符串url) { 正则表达式exrp(“^(?:http://)?([^\\/]+)(.*)”; 匹配结果是什么; if(regex_搜索(url、what、exrp)) { 字符串基(what[1]。第一,what[1]。第二); 返回基地; } 返回“”; } int main(){ 不能,c++,regex,C++,Regex,http://不匹配,但是它是可选的,所以这没有问题;“一个或多个非斜杠字符”匹配httpasd:,当然*然后匹配斜杠(包括)中的所有字符这将与任何通用的正则表达式实现一样,没有C++的特定性! ^((http://))([^ \//+)(*)$ < /代码> < /p> (?:http://)?末尾的?表示该位是可选的 此([^\\/]+)捕获并匹配任何非\或/ 此(.*)捕获到行尾的所有其他内容 也许你在追求更像 ^(?:https?:/)([^\\/]+)(.*)$ 可能考虑沿着行的完整
httpasd:
,当然*
然后匹配斜杠(包括)中的所有字符这将与任何通用的正则表达式实现一样,没有C++的特定性! <代码> ^((http://))([^ \//+)(*)$ < /代码> < /p>
(?:http://)?
末尾的?表示该位是可选的此
([^\\/]+)
捕获并匹配任何非\或/此
(.*)
捕获到行尾的所有其他内容
也许你在追求更像
^(?:https?:/)([^\\/]+)(.*)$
可能考虑沿着
行的完整URL语法 file:// /C:/temp/app/example.html
file:// C : /temp/app/example.html
file:// C : \temp\app\example.html
http://user@www.hotmail.passport.login.net:8080/test/url.htm?view=smart
[method][ server ][ path ][optional]
[user][ domain ][port]
那么你的正则表达式就更像
([a-zA-Z][a-zA-Z0-9\\+\\-\\.]*://)?(([^@/\\\\]+@)?([a-zA-Z0-9_'!~\\-,;&=\\.\\$\\*\\(\\)\\+]+)(:\\d*)?)?([/\\\\][^?]*)?(\\?.*)?
@raj,这完全取决于你想匹配什么,不想匹配什么。我很高兴@Greg能够预言这一点(我从你的接受程度推断),因为我的思维阅读能力有限;-)。
([a-zA-Z][a-zA-Z0-9\\+\\-\\.]*://)?(([^@/\\\\]+@)?([a-zA-Z0-9_'!~\\-,;&=\\.\\$\\*\\(\\)\\+]+)(:\\d*)?)?([/\\\\][^?]*)?(\\?.*)?