这是文字:
https://www.google.com/url?rct=3Dj\u0026sa=3Dt\u0026url=3Dhttps://rivesjournal.com/inside-track-trading-focus-on-shares-of-adobe-systems-inc-adbe/48453/\u0026ct=3Dga\u0026cd=3DCAEYASoTOT
我想获得实际链接:
https://rivesjournal.com/inside-track-trading-focus-on-shares-of-adobe-systems-inc-adbe/48453/
/=3Dhttps.*\//g
包括=3D
,但我希望没有它。我怎么能搞清楚这一点?
这里是regex。
答案 0 :(得分:1)
make = 3D作为积极的背后隐藏
select application_status,application_uuid,changed_at_utc,changed_by
from (select t.*,
max(case when application_status='Ready for Scoring' then changed_at_utc end) over(partition by application_uuid) as status_time
from tablename t
) t1
where changed_at_utc > status_time
演示:https://regex101.com/r/sHvRMA/2
<强>更新强>
对于特定于JavaScript的代码,请使用capture groups
(?<==3D)https.*\/
答案 1 :(得分:1)
一个选项是通过使用带有http.*
锚点的否定前瞻来防止第一个^
子字符串匹配:
(?!^)https:.*\/
这基本上与https:.*\/
匹配,只要它不在字符串的开头。
段:
var string = 'https://www.google.com/url?rct=3Dj\u0026sa=3Dt\u0026url=3Dhttps://rivesjournal.com/inside-track-trading-focus-on-shares-of-adobe-systems-inc-adbe/48453/\u0026ct=3Dga\u0026cd=3DCAEYASoTOT';
console.log(string.match(/(?!^)https:.*\//)[0]);
&#13;
但是,上面的表达式不会涵盖所有边缘情况,因此更好的选择就是使用捕获组:
=3D(https.*\/)
段:
var string = 'https://www.google.com/url?rct=3Dj\u0026sa=3Dt\u0026url=3Dhttps://rivesjournal.com/inside-track-trading-focus-on-shares-of-adobe-systems-inc-adbe/48453/\u0026ct=3Dga\u0026cd=3DCAEYASoTOT';
console.log(string.match(/=3D(https.*\/)/)[1]);
&#13;
您还可以使用否定字符类,例如[^\\]+
来匹配一个或多个非\
字符:
=3D(https[^\\]+)
答案 2 :(得分:0)
这是一个很好的资源,可以搞清楚正则表达式匹配
答案 3 :(得分:0)
我从来没有在Javascript中使用正则表达式,但我在bash,sh,ps和C#中广泛使用它们,据我所知,这就是你要找的东西:
/=3D(http.*\/)\\
https://regex101.com/r/bupG3W/1
用于捕捉比赛中的小组
var myString = "something format_abc";
var myRegexp = /(?:^|\s)format_(.*?)(?:\s|$)/g;
var match = myRegexp.exec(myString);
console.log(match[1]); // abc
答案 4 :(得分:0)
对于将正则表达式与支持有限功能子集的语言(例如CMake)一起使用的人,其他答案均无效。在这种情况下,一种选择是只捕获前面的字符串(在OP的情况下为=3D
),然后使用字符串操作将事实结束后从其余匹配项中删除。它不优雅,但可以。