Javascript 不确定如何捕获斜杠符号“/&引用;在我的正则表达式中
我目前有一个正则表达式Javascript 不确定如何捕获斜杠符号“/&引用;在我的正则表达式中,javascript,regex,parsing,url,Javascript,Regex,Parsing,Url,我目前有一个正则表达式/((http:\/\/.+(.net\/.com\/)|^\/)(.+)$/gm,它提取绝对路径或相对路径的相对URL(我知道该路径将是.com或.net域,或者它可能只是整个相对路径) 它工作得很好,只是我不知道如何将斜杠放入最后一个捕获组。一些例子: http://google.com/abcd/efg (captures "abcd/efg", but I want "/abcd/efg") http://google.com/abcd (captures "abc
/((http:\/\/.+(.net\/.com\/)|^\/)(.+)$/gm
,它提取绝对路径或相对路径的相对URL(我知道该路径将是.com或.net域,或者它可能只是整个相对路径)
它工作得很好,只是我不知道如何将斜杠放入最后一个捕获组。一些例子:
http://google.com/abcd/efg (captures "abcd/efg", but I want "/abcd/efg")
http://google.com/abcd (captures "abcd", but I want "/abcd")
http://google.com/ (Fail)
http://google.com (Fail)
/abcd (captures "abcd", but I want "/abcd")
/ (Fail)
感觉好像我错过了一些明显的东西,任何帮助都将不胜感激。这是怎么回事:
(?
每个组都是介于/
包含和下一个/
排除之间的文本
e、 g
对于http://google.com/abc/def/ghi
将捕获四个组:
/谷歌网站
/abc
/def
/ghi
只需将除第一个之外的所有内容合并,您将收到所需的内容。如果没有模式重新排序和分组构造边界更改,您将无法实现这一点
在((http:\/\/.+(.net\/.com\/))^\/)
第一个捕获组中,/
斜杠应移动到第二个组(.net+)
我建议使用
/(http:\/\/.+(\.net|\.com)|^)(\/.+)$/gm
见
详细信息:
(http:\/\/.+(\.net|\.com)\^)
-第一组:
http:\/\/.+(\.net|\.com)
-http://
,除换行符以外的任何1+字符,.net
或.com
捕获到组2中(如果此组是冗余的,请将(\.net|\.com)
替换为。(?:net | com)
)
|
-或
^
-字符串的开头
(\/.+)
-第3组(或第2组):斜杠和除换行符以外的任何1+字符
正则表达式语法看起来不像Java,而是更像Javascript。尽管如此,您可能必须避开斜杠,例如使用\/
。请尝试@WiktorStribiżewhttp://google.com/abc/abc
会导致奇怪的行为。我认为OP应该将每个/abc
捕获到单独的组中,然后concat@xenteros:我没有什么奇怪的地方。@Thomas Oops,我在regexr上进行测试,所以我只是从那里复制了代码,但我最终会在Java程序中使用它。谢谢你,这是为了我的目的!我不知道你可以单独使用行开始断言。