我正在尝试编写一个简单的正则表达式来匹配以下内容:
/path/foo.html
/path/foo.html?a=b
/path/foo.html?a=b&b=c
但不是/path/foo.htmlx或其他不是foo.html + url参数的内容。
我试过
/path/foo.html(?:\?|$)
但它似乎不适用于我的java项目。
答案 0 :(得分:1)
String.matches(String regex)
完全匹配
判断此字符串是否与给定的正则表达式匹配。
调用str.matches(regex)形式的此方法会产生与表达式
完全相同的结果
因此,例如"/path/foo.html?a=b".matches("/path/foo.html(?:\\?|$)")
返回false,因为String不会在?
之后结束。
您可以使用"/path/foo.html(\\?.*)?"
答案 1 :(得分:1)
对于URL部分,请使用@reconnect提供的regexp:
int main() {
Foo x{1}, y{2};
x += y += 5;
std::cout << "x " << x << " y " << y << '\n';
}
从开始到^[^?]*
字符符合匹配。
准确搜索/path/foo.html使用:
?
如果你需要检查行中是否存在符合匹配项的部分,请添加^/path/foo.html
- 行首和^
行结尾,在这种情况下,你应该关心你的结尾之间的字符条件,基本上替换为$
答案 2 :(得分:0)
我并不完全理解您要匹配的内容,但如果您只想匹配没有搜索字符串的网址部分:
/^[^?#]*/
# - hash string,也可以传递一些参数